rpms/kernel/F-7 kernel-2.6.spec, 1.3403, 1.3404 linux-2.6-ath5k.patch, 1.7, 1.8 linux-2.6-rtl8180.patch, 1.1, 1.2 linux-2.6-wireless-pending.patch, 1.7, 1.8 linux-2.6-wireless.patch, 1.16, 1.17

John W. Linville (linville) fedora-extras-commits at redhat.com
Wed Dec 19 21:21:11 UTC 2007


Author: linville

Update of /cvs/pkgs/rpms/kernel/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv22797

Modified Files:
	kernel-2.6.spec linux-2.6-ath5k.patch linux-2.6-rtl8180.patch 
	linux-2.6-wireless-pending.patch linux-2.6-wireless.patch 
Log Message:
Some wireless fixes headed for 2.6.24 ; Some wireless updates headed for 2.6.25


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/kernel-2.6.spec,v
retrieving revision 1.3403
retrieving revision 1.3404
diff -u -r1.3403 -r1.3404
--- kernel-2.6.spec	19 Dec 2007 00:43:37 -0000	1.3403
+++ kernel-2.6.spec	19 Dec 2007 21:19:48 -0000	1.3404
@@ -2300,6 +2300,10 @@
 %endif
 
 %changelog
+* Wed Dec 19 2007 John W. Linville <linville at redhat.com> 2.6.23.10-53
+- Some wireless fixes headed for 2.6.24
+- Some wireless updates headed for 2.6.25
+
 * Tue Dec 18 2007 Chuck Ebbert <cebbert at redhat.com> 2.6.23.10-52
 - Linux 2.6.23.12
 - Add fixed version of APM emulation patch removed in 2.6.23.10

linux-2.6-ath5k.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.7 -r 1.8 linux-2.6-ath5k.patch
Index: linux-2.6-ath5k.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/linux-2.6-ath5k.patch,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- linux-2.6-ath5k.patch	6 Dec 2007 02:25:10 -0000	1.7
+++ linux-2.6-ath5k.patch	19 Dec 2007 21:19:48 -0000	1.8
@@ -1,13 +1,70 @@
-diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.c
---- /dev/null	2007-12-05 20:11:19.574108129 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/hw.c	2007-12-05 20:52:28.000000000 -0500
-@@ -0,0 +1,4279 @@
-+ /*
-+ * Copyright (c) 2004-2007 Reyk Floeter <reyk at openbsd.org>
-+ * Copyright (c) 2006-2007 Nick Kossifidis <mickflemm at gmail.com>
-+ * Copyright (c) 2007 Matthew W. S. Bell  <mentor at madwifi.org>
-+ * Copyright (c) 2007 Luis Rodriguez <mcgrof at winlab.rutgers.edu>
-+ * Copyright (c) 2007 Pavel Roskin <proski at gnu.org>
+diff -up linux-2.6.23.noarch/MAINTAINERS.orig linux-2.6.23.noarch/MAINTAINERS
+--- linux-2.6.23.noarch/MAINTAINERS.orig	2007-12-19 14:38:13.000000000 -0500
++++ linux-2.6.23.noarch/MAINTAINERS	2007-12-19 14:46:14.000000000 -0500
+@@ -642,6 +642,17 @@ M:	ecashin at coraid.com
+ W:	http://www.coraid.com/support/linux
+ S:	Supported
+ 
++ATHEROS ATH5K WIRELESS DRIVER
++P:	Jiri Slaby
++M:	jirislaby at gmail.com
++P:	Nick Kossifidis
++M:	mickflemm at gmail.com
++P:	Luis R. Rodriguez
++M:	mcgrof at gmail.com
++L:	linux-wireless at vger.kernel.org
++L:	ath5k-devel at lists.ath5k.org
++S:	Maintained
++
+ ATL1 ETHERNET DRIVER
+ 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-19 14:38:13.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/Makefile	2007-12-19 14:46:14.000000000 -0500
+@@ -62,3 +62,5 @@ obj-$(CONFIG_RT2X00)		+= rt2x00/
+ obj-$(CONFIG_P54_COMMON)	+= p54common.o
+ obj-$(CONFIG_P54_USB)		+= p54usb.o
+ obj-$(CONFIG_P54_PCI)		+= p54pci.o
++
++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-19 14:38:13.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig	2007-12-19 14:46:55.000000000 -0500
+@@ -599,6 +599,24 @@ config P54_PCI
+ 	tristate "Prism54 PCI support"
+ 	depends on P54_COMMON && PCI
+ 
++config ATH5K
++	tristate "Atheros 5xxx wireless cards support"
++	depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL
++	default m
++	---help---
++	  This module adds support for wireless adapters based on
++	  Atheros 5xxx chipset.
++
++	  Currently the following chip versions are supported:
++
++	  MAC: AR5211 AR5212
++	  PHY: RF5111/2111 RF5112/2112 RF5413/2413
++
++	  This driver uses the kernel's mac80211 subsystem.
++
++	  If you choose to build a module, it'll be called ath5k. Say M if
++	  unsure.
++
+ source "drivers/net/wireless/hostap/Kconfig"
+ source "drivers/net/wireless/bcm43xx/Kconfig"
+ source "drivers/net/wireless/b43/Kconfig"
+diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/phy.c
+--- /dev/null	2007-12-19 09:04:26.531266789 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/phy.c	2007-12-19 14:46:14.000000000 -0500
+@@ -0,0 +1,2071 @@
++/*
++ * PHY functions
++ *
++ * Copyright (c) 2004, 2005, 2006, 2007 Reyk Floeter <reyk at openbsd.org>
++ * Copyright (c) 2006, 2007 Nick Kossifidis <mickflemm at gmail.com>
 + * Copyright (c) 2007 Jiri Slaby <jirislaby at gmail.com>
 + *
 + * Permission to use, copy, modify, and distribute this software for any
@@ -24,11228 +81,10889 @@
 + *
 + */
 +
-+/*
-+ * HW related functions for Atheros Wireless LAN devices.
-+ */
-+
-+#include <linux/pci.h>
 +#include <linux/delay.h>
 +
++#include "ath5k.h"
 +#include "reg.h"
 +#include "base.h"
-+#include "debug.h"
-+
-+/*Rate tables*/
-+static const struct ath5k_rate_table ath5k_rt_11a = AR5K_RATES_11A;
-+static const struct ath5k_rate_table ath5k_rt_11b = AR5K_RATES_11B;
-+static const struct ath5k_rate_table ath5k_rt_11g = AR5K_RATES_11G;
-+static const struct ath5k_rate_table ath5k_rt_turbo = AR5K_RATES_TURBO;
-+static const struct ath5k_rate_table ath5k_rt_xr = AR5K_RATES_XR;
-+
-+/*Prototypes*/
-+static int ath5k_hw_nic_reset(struct ath5k_hw *, u32);
-+static int ath5k_hw_nic_wakeup(struct ath5k_hw *, int, bool);
-+static int ath5k_hw_setup_4word_tx_desc(struct ath5k_hw *, struct ath5k_desc *,
-+	unsigned int, unsigned int, enum ath5k_pkt_type, unsigned int,
-+	unsigned int, unsigned int, unsigned int, unsigned int, unsigned int,
-+	unsigned int, unsigned int);
-+static bool ath5k_hw_setup_xr_tx_desc(struct ath5k_hw *, struct ath5k_desc *,
-+	unsigned int, unsigned int, unsigned int, unsigned int, unsigned int,
-+	unsigned int);
-+static int ath5k_hw_proc_4word_tx_status(struct ath5k_hw *, struct ath5k_desc *);
-+static int ath5k_hw_setup_2word_tx_desc(struct ath5k_hw *, struct ath5k_desc *,
-+	unsigned int, unsigned int, enum ath5k_pkt_type, unsigned int,
-+	unsigned int, unsigned int, unsigned int, unsigned int, unsigned int,
-+	unsigned int, unsigned int);
-+static int ath5k_hw_proc_2word_tx_status(struct ath5k_hw *, struct ath5k_desc *);
-+static int ath5k_hw_proc_new_rx_status(struct ath5k_hw *, struct ath5k_desc *);
-+static int ath5k_hw_proc_old_rx_status(struct ath5k_hw *, struct ath5k_desc *);
-+static int ath5k_hw_get_capabilities(struct ath5k_hw *);
-+
-+static int ath5k_eeprom_init(struct ath5k_hw *);
-+static int ath5k_eeprom_read_mac(struct ath5k_hw *, u8 *);
-+
-+static int ath5k_hw_enable_pspoll(struct ath5k_hw *, u8 *, u16);
-+static int ath5k_hw_disable_pspoll(struct ath5k_hw *);
-+
-+/*
-+ * Enable to overwrite the country code (use "00" for debug)
-+ */
-+#if 0
-+#define COUNTRYCODE "00"
-+#endif
-+
-+/*******************\
-+  General Functions
-+\*******************/
-+
-+/*
-+ * Functions used internaly
-+ */
-+
-+static inline unsigned int ath5k_hw_htoclock(unsigned int usec, bool turbo)
-+{
-+	return turbo == true ? (usec * 80) : (usec * 40);
-+}
 +
-+static inline unsigned int ath5k_hw_clocktoh(unsigned int clock, bool turbo)
-+{
-+	return turbo == true ? (clock / 80) : (clock / 40);
-+}
++/* Struct to hold initial RF register values (RF Banks) */
++struct ath5k_ini_rf {
++	u8	rf_bank;	/* check out ath5k_reg.h */
++	u16	rf_register;	/* register address */
++	u32	rf_value[5];	/* register value for different modes (above) */
++};
 +
 +/*
-+ * Check if a register write has been completed
++ * Mode-specific RF Gain table (64bytes) for RF5111/5112
++ * (RF5110 only comes with AR5210 and only supports a/turbo a mode so initial
++ * RF Gain values are included in AR5K_AR5210_INI)
 + */
-+int ath5k_hw_register_timeout(struct ath5k_hw *ah, u32 reg, u32 flag, u32 val,
-+		bool is_set)
-+{
-+	int i;
-+	u32 data;
++struct ath5k_ini_rfgain {
++	u16	rfg_register;	/* RF Gain register address */
++	u32	rfg_value[2];	/* [freq (see below)] */
++};
 +
-+	for (i = AR5K_TUNE_REGISTER_TIMEOUT; i > 0; i--) {
-+		data = ath5k_hw_reg_read(ah, reg);
-+		if ((is_set == true) && (data & flag))
-+			break;
-+		else if ((data & flag) == val)
-+			break;
-+		udelay(15);
-+	}
++struct ath5k_gain_opt {
++	u32			go_default;
++	u32			go_steps_count;
++	const struct ath5k_gain_opt_step	go_step[AR5K_GAIN_STEP_COUNT];
++};
 +
-+	return (i <= 0) ? -EAGAIN : 0;
[...28614 lines suppressed...]
 +
-+static inline void
-+ath5k_debug_finish(void) {}
++#define ath5k_hw_hasbssidmask(_ah) \
++	(ath5k_hw_get_capability(_ah, AR5K_CAP_BSSIDMASK, 0, NULL) == 0)
++#define ath5k_hw_hasveol(_ah) \
++	(ath5k_hw_get_capability(_ah, AR5K_CAP_VEOL, 0, NULL) == 0)
 +
-+static inline void
-+ath5k_debug_finish_device(struct ath5k_softc *sc) {}
++#endif
+diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.c
+--- /dev/null	2007-12-19 09:04:26.531266789 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/regdom.c	2007-12-19 14:46:14.000000000 -0500
+@@ -0,0 +1,121 @@
++/*
++ * Copyright (c) 2004, 2005 Reyk Floeter <reyk at vantronix.net>
++ *
++ * Permission to use, copy, modify, and distribute this software for any
++ * purpose with or without fee is hereby granted, provided that the above
++ * copyright notice and this permission notice appear in all copies.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++ */
 +
-+static inline void
-+ath5k_debug_printrxbuffs(struct ath5k_softc *sc, struct ath5k_hw *ah) {}
++/*
++ * Basic regulation domain extensions for the IEEE 802.11 stack
++ */
 +
-+static inline void
-+ath5k_debug_dump_modes(struct ath5k_softc *sc,
-+			struct ieee80211_hw_mode *modes) {}
++#include <linux/kernel.h>
++#include <linux/string.h>
 +
-+static inline void
-+ath5k_debug_dump_skb(struct ath5k_softc *sc,
-+			struct sk_buff *skb, const char *prefix, int tx) {}
++#include "regdom.h"
 +
-+static inline void
-+ath5k_debug_printtxbuf(struct ath5k_softc *sc,
-+			struct ath5k_buf *bf, int done) {}
++static const struct ath5k_regdommap {
++	enum ath5k_regdom dmn;
++	enum ath5k_regdom dmn5;
++	enum ath5k_regdom dmn2;
++} r_map[] = {
++	{ DMN_DEFAULT,		DMN_DEBUG,	DMN_DEBUG },
++	{ DMN_NULL_WORLD,	DMN_NULL,	DMN_WORLD },
++	{ DMN_NULL_ETSIB,	DMN_NULL,	DMN_ETSIB },
++	{ DMN_NULL_ETSIC,	DMN_NULL,	DMN_ETSIC },
++	{ DMN_FCC1_FCCA,	DMN_FCC1,	DMN_FCCA },
++	{ DMN_FCC1_WORLD,	DMN_FCC1,	DMN_WORLD },
++	{ DMN_FCC2_FCCA,	DMN_FCC2,	DMN_FCCA },
++	{ DMN_FCC2_WORLD,	DMN_FCC2,	DMN_WORLD },
++	{ DMN_FCC2_ETSIC,	DMN_FCC2,	DMN_ETSIC },
++	{ DMN_FRANCE_NULL,	DMN_ETSI3,	DMN_ETSI3 },
++	{ DMN_FCC3_FCCA,	DMN_FCC3,	DMN_WORLD },
++	{ DMN_ETSI1_WORLD,	DMN_ETSI1,	DMN_WORLD },
++	{ DMN_ETSI3_ETSIA,	DMN_ETSI3,	DMN_WORLD },
++	{ DMN_ETSI2_WORLD,	DMN_ETSI2,	DMN_WORLD },
++	{ DMN_ETSI3_WORLD,	DMN_ETSI3,	DMN_WORLD },
++	{ DMN_ETSI4_WORLD,	DMN_ETSI4,	DMN_WORLD },
++	{ DMN_ETSI4_ETSIC,	DMN_ETSI4,	DMN_ETSIC },
++	{ DMN_ETSI5_WORLD,	DMN_ETSI5,	DMN_WORLD },
++	{ DMN_ETSI6_WORLD,	DMN_ETSI6,	DMN_WORLD },
++	{ DMN_ETSI_NULL,	DMN_ETSI1,	DMN_ETSI1 },
++	{ DMN_MKK1_MKKA,	DMN_MKK1,	DMN_MKKA },
++	{ DMN_MKK1_MKKB,	DMN_MKK1,	DMN_MKKA },
++	{ DMN_APL4_WORLD,	DMN_APL4,	DMN_WORLD },
++	{ DMN_MKK2_MKKA,	DMN_MKK2,	DMN_MKKA },
++	{ DMN_APL_NULL,		DMN_APL1,	DMN_NULL },
++	{ DMN_APL2_WORLD,	DMN_APL2,	DMN_WORLD },
++	{ DMN_APL2_APLC,	DMN_APL2,	DMN_WORLD },
++	{ DMN_APL3_WORLD,	DMN_APL3,	DMN_WORLD },
++	{ DMN_MKK1_FCCA,	DMN_MKK1,	DMN_FCCA },
++	{ DMN_APL2_APLD,	DMN_APL2,	DMN_APLD },
++	{ DMN_MKK1_MKKA1,	DMN_MKK1,	DMN_MKKA },
++	{ DMN_MKK1_MKKA2,	DMN_MKK1,	DMN_MKKA },
++	{ DMN_APL1_WORLD,	DMN_APL1,	DMN_WORLD },
++	{ DMN_APL1_FCCA,	DMN_APL1,	DMN_FCCA },
++	{ DMN_APL1_APLA,	DMN_APL1,	DMN_WORLD },
++	{ DMN_APL1_ETSIC,	DMN_APL1,	DMN_ETSIC },
++	{ DMN_APL2_ETSIC,	DMN_APL2,	DMN_ETSIC },
++	{ DMN_APL5_WORLD,	DMN_APL5,	DMN_WORLD },
++	{ DMN_WOR0_WORLD,	DMN_WORLD,	DMN_WORLD },
++	{ DMN_WOR1_WORLD,	DMN_WORLD,	DMN_WORLD },
++	{ DMN_WOR2_WORLD,	DMN_WORLD,	DMN_WORLD },
++	{ DMN_WOR3_WORLD,	DMN_WORLD,	DMN_WORLD },
++	{ DMN_WOR4_WORLD,	DMN_WORLD,	DMN_WORLD },
++	{ DMN_WOR5_ETSIC,	DMN_WORLD,	DMN_WORLD },
++	{ DMN_WOR01_WORLD,	DMN_WORLD,	DMN_WORLD },
++	{ DMN_WOR02_WORLD,	DMN_WORLD,	DMN_WORLD },
++	{ DMN_EU1_WORLD,	DMN_ETSI1,	DMN_WORLD },
++	{ DMN_WOR9_WORLD,	DMN_WORLD,	DMN_WORLD },
++	{ DMN_WORA_WORLD,	DMN_WORLD,	DMN_WORLD },
++};
 +
-+#endif /* if ATH5K_DEBUG */
++enum ath5k_regdom ath5k_regdom2flag(enum ath5k_regdom dmn, u16 mhz)
++{
++	unsigned int i;
 +
-+#endif /* ifndef _ATH5K_DEBUG_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-05 20:51:44.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig	2007-12-05 20:52:28.000000000 -0500
-@@ -598,6 +598,24 @@ config P54_PCI
- 	tristate "Prism54 PCI support"
- 	depends on P54_COMMON && PCI
- 
-+config ATH5K
-+	tristate "Atheros 5xxx wireless cards support"
-+	depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL
-+	default m
-+	---help---
-+	  This module adds support for wireless adapters based on
-+	  Atheros 5xxx chipset.
++	for (i = 0; i < ARRAY_SIZE(r_map); i++) {
++		if (r_map[i].dmn == dmn) {
++			if (mhz >= 2000 && mhz <= 3000)
++				return r_map[i].dmn2;
++			if (mhz >= IEEE80211_CHANNELS_5GHZ_MIN &&
++					mhz <= IEEE80211_CHANNELS_5GHZ_MAX)
++				return r_map[i].dmn5;
++		}
++	}
 +
-+	  Currently the following chip versions are supported:
++	return DMN_DEBUG;
++}
 +
-+	  MAC: AR5211 AR5212
-+	  PHY: RF5111/2111 RF5112/2112 RF5413/2413
++u16 ath5k_regdom_from_ieee(enum ath5k_regdom ieee)
++{
++	u32 regdomain = (u32)ieee;
 +
-+	  This driver uses the kernel's mac80211 subsystem.
++	/*
++	 * Use the default regulation domain if the value is empty
++	 * or not supported by the net80211 regulation code.
++	 */
++	if (ath5k_regdom2flag(regdomain, IEEE80211_CHANNELS_5GHZ_MIN) ==
++			DMN_DEBUG)
++		return (u16)AR5K_TUNE_REGDOMAIN;
 +
-+	  If you choose to build a module, it'll be called ath5k. Say M if
-+	  unsure.
++	/* It is supported, just return the value */
++	return regdomain;
++}
 +
- source "drivers/net/wireless/hostap/Kconfig"
- source "drivers/net/wireless/bcm43xx/Kconfig"
- source "drivers/net/wireless/b43/Kconfig"
-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-05 20:51:44.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Makefile	2007-12-05 20:52:28.000000000 -0500
-@@ -62,3 +62,5 @@ obj-$(CONFIG_RT2X00)		+= rt2x00/
- obj-$(CONFIG_P54_COMMON)	+= p54common.o
- obj-$(CONFIG_P54_USB)		+= p54usb.o
- obj-$(CONFIG_P54_PCI)		+= p54pci.o
++enum ath5k_regdom ath5k_regdom_to_ieee(u16 regdomain)
++{
++	enum ath5k_regdom ieee = (enum ath5k_regdom)regdomain;
 +
-+obj-$(CONFIG_ATH5K)	+= ath5k/
-diff -up linux-2.6.23.noarch/MAINTAINERS.orig linux-2.6.23.noarch/MAINTAINERS
---- linux-2.6.23.noarch/MAINTAINERS.orig	2007-12-05 20:51:44.000000000 -0500
-+++ linux-2.6.23.noarch/MAINTAINERS	2007-12-05 20:52:28.000000000 -0500
-@@ -642,6 +642,17 @@ M:	ecashin at coraid.com
- W:	http://www.coraid.com/support/linux
- S:	Supported
- 
-+ATHEROS ATH5K WIRELESS DRIVER
-+P:	Jiri Slaby
-+M:	jirislaby at gmail.com
-+P:	Nick Kossifidis
-+M:	mickflemm at gmail.com
-+P:	Luis R. Rodriguez
-+M:	mcgrof at gmail.com
-+L:	linux-wireless at vger.kernel.org
-+L:	ath5k-devel at lists.ath5k.org
-+S:	Maintained
++	return ieee;
++}
 +
- ATL1 ETHERNET DRIVER
- P:	Jay Cliburn
- M:	jcliburn at gmail.com

linux-2.6-rtl8180.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.1 -r 1.2 linux-2.6-rtl8180.patch
Index: linux-2.6-rtl8180.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/linux-2.6-rtl8180.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-rtl8180.patch	6 Dec 2007 02:25:11 -0000	1.1
+++ linux-2.6-rtl8180.patch	19 Dec 2007 21:19:48 -0000	1.2
@@ -1,18 +1,35 @@
-diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/rtl8180_dev.c
---- /dev/null	2007-12-05 20:11:19.574108129 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_dev.c	2007-12-05 21:17:52.000000000 -0500
-@@ -0,0 +1,1053 @@
+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-19 14:48:35.000000000 -0500
++++ linux-2.6.23.noarch/include/linux/pci_ids.h	2007-12-19 14:49:12.000000000 -0500
+@@ -2059,6 +2059,9 @@
+ #define PCI_DEVICE_ID_ALTIMA_AC9100	0x03ea
+ #define PCI_DEVICE_ID_ALTIMA_AC1003	0x03eb
+ 
++#define PCI_VENDOR_ID_BELKIN		0x1799
++#define PCI_DEVICE_ID_BELKIN_F5D7010V7	0x701f
++
+ #define PCI_VENDOR_ID_LENOVO		0x17aa
+ 
+ #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-19 09:04:26.531266789 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/rtl8180_sa2400.c	2007-12-19 14:49:12.000000000 -0500
+@@ -0,0 +1,193 @@
 +
 +/*
-+ * Linux device driver for RTL8180 / RTL8185
++ * Radio tuning for Philips SA2400 on RTL8180
 + *
-+ * Copyright 2007 Michael Wu <flamingice at sourmilk.net>
 + * Copyright 2007 Andrea Merello <andreamrl at tiscali.it>
 + *
-+ * Based on the r8180 driver, which is:
-+ * Copyright 2004-2005 Andrea Merello <andreamrl at tiscali.it>, et al.
++ * Code from the BSD driver and the rtl8181 project have been
++ * very useful to understand certain things
 + *
-+ * Thanks to Realtek for their support!
++ * 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
@@ -22,1843 +39,2205 @@
 +#include <linux/init.h>
 +#include <linux/pci.h>
 +#include <linux/delay.h>
-+#include <linux/etherdevice.h>
-+#include <linux/eeprom_93cx6.h>
 +#include <net/mac80211.h>
 +
 +#include "rtl8180.h"
-+#include "rtl8180_rtl8225.h"
 +#include "rtl8180_sa2400.h"
-+#include "rtl8180_max2820.h"
-+
-+MODULE_AUTHOR("Michael Wu <flamingice at sourmilk.net>");
-+MODULE_AUTHOR("Andrea Merello <andreamrl at tiscali.it>");
-+MODULE_DESCRIPTION("RTL8180 / RTL8185 PCI wireless driver");
-+MODULE_LICENSE("GPL");
-+
-+static struct pci_device_id rtl8180_table[] __devinitdata = {
-+	/* rtl8185 */
-+	{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8185) },
 +
-+	/* rtl8180 */
-+	{ PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8180) },
-+	{ PCI_DEVICE(0x1799, 0x6001) },
-+	{ PCI_DEVICE(0x1799, 0x6020) },
-+	{ PCI_DEVICE(PCI_VENDOR_ID_DLINK, 0x3300) },
-+	{ }
++static const u32 sa2400_chan[] = {
++	0x00096c, /* ch1 */
++	0x080970,
++	0x100974,
++	0x180978,
++	0x000980,
++	0x080984,
++	0x100988,
++	0x18098c,
++	0x000994,
++	0x080998,
++	0x10099c,
++	0x1809a0,
++	0x0009a8,
++	0x0009b4, /* ch 14 */
 +};
 +
-+MODULE_DEVICE_TABLE(pci, rtl8180_table);
-+
-+void rtl8180_write_phy(struct ieee80211_hw *dev, u8 addr, u32 data)
++static void write_sa2400(struct ieee80211_hw *dev, u8 addr, u32 data)
 +{
 +	struct rtl8180_priv *priv = dev->priv;
-+	int i = 10;
-+	u32 buf;
++	u32 phy_config;
 +
-+	buf = (data << 8) | addr;
++	/* MAC will bang bits to the sa2400. sw 3-wire is NOT used */
++	phy_config = 0xb0000000;
 +
-+	rtl818x_iowrite32(priv, (__le32 __iomem *)&priv->map->PHY[0], buf | 0x80);
-+	while (i--) {
-+		rtl818x_iowrite32(priv, (__le32 __iomem *)&priv->map->PHY[0], buf);
-+		if (rtl818x_ioread8(priv, &priv->map->PHY[2]) == (data & 0xFF))
-+			return;
-+	}
++	phy_config |= ((u32)(addr & 0xf)) << 24;
++	phy_config |= data & 0xffffff;
++
++	rtl818x_iowrite32(priv,
++		(__le32 __iomem *) &priv->map->RFPinsOutput, phy_config);
++
++	msleep(3);
 +}
 +
-+static void rtl8180_handle_rx(struct ieee80211_hw *dev)
++static void sa2400_write_phy_antenna(struct ieee80211_hw *dev, short chan)
 +{
 +	struct rtl8180_priv *priv = dev->priv;
-+	unsigned int count = 32;
++	u8 ant = SA2400_ANTENNA;
 +
-+	while (count--) {
-+		struct rtl8180_rx_desc *entry = &priv->rx_ring[priv->rx_idx];
-+		struct sk_buff *skb = priv->rx_buf[priv->rx_idx];
-+		u32 flags = le32_to_cpu(entry->flags);
++	if (priv->rfparam & RF_PARAM_ANTBDEFAULT)
++		ant |= BB_ANTENNA_B;
 +
-+		if (flags & RTL8180_RX_DESC_FLAG_OWN)
-+			return;
++	if (chan == 14)
++		ant |= BB_ANTATTEN_CHAN14;
 +
-+		if (unlikely(flags & (RTL8180_RX_DESC_FLAG_DMA_FAIL |
-+				      RTL8180_RX_DESC_FLAG_FOF |
-+				      RTL8180_RX_DESC_FLAG_RX_ERR)))
-+			goto done;
-+		else {
-+			u32 flags2 = le32_to_cpu(entry->flags2);
-+			struct ieee80211_rx_status rx_status = {0};
-+			struct sk_buff *new_skb = dev_alloc_skb(MAX_RX_SIZE);
-+			int rate;
++	rtl8180_write_phy(dev, 0x10, ant);
 +
-+			if (unlikely(!new_skb))
-+				goto done;
++}
 +
-+			pci_unmap_single(priv->pdev,
-+					 *((dma_addr_t *)skb->cb),
-+					 MAX_RX_SIZE, PCI_DMA_FROMDEVICE);
-+			skb_put(skb, flags & 0xFFF);
++void sa2400_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 = sa2400_chan[conf->channel - 1];
 +
-+			rate = (flags >> 20) & 0xF;
-+			rx_status.antenna = (flags2 >> 15) & 1;
-+			/* TODO: improve signal/rssi reporting */
-+			rx_status.signal = flags2 & 0xFF;
-+			rx_status.ssi = (flags2 >> 8) & 0x7F;
-+			rx_status.rate = priv->rates[rate].rate;
-+			rx_status.freq = dev->conf.freq;
-+			rx_status.channel = dev->conf.channel;
-+			rx_status.phymode = dev->conf.phymode;
-+			rx_status.mactime = le64_to_cpu(entry->tsft);
-+			ieee80211_rx_irqsafe(dev, skb, &rx_status);
++	write_sa2400(dev, 7, txpw);
 +
-+			skb = new_skb;
-+			priv->rx_buf[priv->rx_idx] = skb;
-+			*((dma_addr_t *) skb->cb) =
-+				pci_map_single(priv->pdev, skb_tail_pointer(skb),
-+					       MAX_RX_SIZE, PCI_DMA_FROMDEVICE);
-+		}
++	sa2400_write_phy_antenna(dev, chan);
 +
-+	done:
-+		entry->rx_buf = cpu_to_le32(*((dma_addr_t *)skb->cb));
-+		entry->flags = cpu_to_le32(RTL8180_RX_DESC_FLAG_OWN |
-+					   MAX_RX_SIZE);
-+		if (priv->rx_idx == 31)
-+			entry->flags |= cpu_to_le32(RTL8180_RX_DESC_FLAG_EOR);
-+		priv->rx_idx = (priv->rx_idx + 1) % 32;
-+	}
[...4165 lines suppressed...]
-+	write_sa2400(dev, 1, 0xbb50);
-+	write_sa2400(dev, 2, 0x80);
-+	write_sa2400(dev, 3, 0);
-+	write_sa2400(dev, 4, 0x19340 | firdac);
-+	write_sa2400(dev, 5, 0x1dfb | (SA2400_MAX_SENS - 54) << 15);
-+	write_sa2400(dev, 4, 0x19348 | firdac); /* calibrate VCO */
-+
-+	if (!analogphy)
-+		write_sa2400(dev, 4, 0x1938c); /*???*/
-+
-+	write_sa2400(dev, 4, 0x19340 | firdac);
-+
-+	write_sa2400(dev, 0, sa2400_chan[0]);
-+	write_sa2400(dev, 1, 0xbb50);
-+	write_sa2400(dev, 2, 0x80);
-+	write_sa2400(dev, 3, 0);
-+	write_sa2400(dev, 4, 0x19344 | firdac); /* calibrate filter */
-+
-+	/* new from rtl8180 embedded driver (rtl8181 project) */
-+	write_sa2400(dev, 6, 0x13ff | (1 << 23)); /* MANRX */
-+	write_sa2400(dev, 8, 0); /* VCO */
-+
-+	if (analogphy) {
-+		rtl8180_set_anaparam(priv, anaparam |
-+				     (1 << ANAPARAM_TXDACOFF_SHIFT));
-+
-+		txconf = rtl818x_ioread32(priv, &priv->map->TX_CONF);
-+		rtl818x_iowrite32(priv, &priv->map->TX_CONF,
-+			txconf | RTL818X_TX_CONF_LOOPBACK_CONT);
-+
-+		write_sa2400(dev, 4, 0x19341); /* calibrates DC */
-+
-+		/* a 5us sleep is required here,
-+		 * we rely on the 3ms delay introduced in write_sa2400 */
-+		write_sa2400(dev, 4, 0x19345);
 +
-+		/* a 20us sleep is required here,
-+		 * we rely on the 3ms delay introduced in write_sa2400 */
++	/* MAXIM from netbsd driver */
++	write_max2820(dev, 0, 0x007); /* test mode as indicated in datasheet */
++	write_max2820(dev, 1, 0x01e); /* enable register */
++	write_max2820(dev, 2, 0x001); /* synt register */
 +
-+		rtl818x_iowrite32(priv, &priv->map->TX_CONF, txconf);
++	max2820_rf_set_channel(dev, NULL);
 +
-+		rtl8180_set_anaparam(priv, anaparam);
-+	}
-+	/* end new code */
++	write_max2820(dev, 4, 0x313); /* rx register */
 +
-+	write_sa2400(dev, 4, 0x19341 | firdac); /* RTX MODE */
++	/* PA is driven directly by the BB, we keep the MAXIM bias
++	 * at the highest value in case that setting it to lower
++	 * values may introduce some further attenuation somewhere..
++	 */
++	write_max2820(dev, 5, 0x00f);
 +
 +	/* baseband configuration */
-+	rtl8180_write_phy(dev, 0, 0x98);
-+	rtl8180_write_phy(dev, 3, 0x38);
-+	rtl8180_write_phy(dev, 4, 0xe0);
-+	rtl8180_write_phy(dev, 5, 0x90);
-+	rtl8180_write_phy(dev, 6, 0x1a);
-+	rtl8180_write_phy(dev, 7, 0x64);
++	rtl8180_write_phy(dev, 0, 0x88); /* sys1       */
++	rtl8180_write_phy(dev, 3, 0x08); /* txagc      */
++	rtl8180_write_phy(dev, 4, 0xf8); /* lnadet     */
++	rtl8180_write_phy(dev, 5, 0x90); /* ifagcinit  */
++	rtl8180_write_phy(dev, 6, 0x1a); /* ifagclimit */
++	rtl8180_write_phy(dev, 7, 0x64); /* ifagcdet   */
 +
-+	sa2400_write_phy_antenna(dev, 1);
++	max2820_write_phy_antenna(dev, 1);
 +
-+	rtl8180_write_phy(dev, 0x11, 0x80);
++	rtl8180_write_phy(dev, 0x11, 0x88); /* trl */
 +
 +	if (rtl818x_ioread8(priv, &priv->map->CONFIG2) &
 +	    RTL818X_CONFIG2_ANTENNA_DIV)
-+		rtl8180_write_phy(dev, 0x12, 0xc7); /* enable ant diversity */
++		rtl8180_write_phy(dev, 0x12, 0xc7);
 +	else
-+		rtl8180_write_phy(dev, 0x12, 0x47); /* disable ant diversity */
-+
-+	rtl8180_write_phy(dev, 0x13, 0x90 | priv->csthreshold);
++		rtl8180_write_phy(dev, 0x12, 0x47);
 +
-+	rtl8180_write_phy(dev, 0x19, 0x0);
-+	rtl8180_write_phy(dev, 0x1a, 0xa0);
-+}
-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-05 21:12:49.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig	2007-12-05 21:17:52.000000000 -0500
-@@ -546,6 +546,11 @@ config USB_ZD1201
- 	  To compile this driver as a module, choose M here: the
- 	  module will be called zd1201.
- 
-+config RTL8180
-+	tristate "Realtek 8185 PCI support"
-+	depends on MAC80211 && PCI && WLAN_80211 && EXPERIMENTAL
-+	select EEPROM_93CX6
++	rtl8180_write_phy(dev, 0x13, 0x9b);
 +
- config RTL8187
- 	tristate "Realtek 8187 USB support"
- 	depends on MAC80211 && USB && WLAN_80211 && EXPERIMENTAL
-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-05 21:12:49.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Makefile	2007-12-05 21:17:52.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
- rtl8187-objs		:= rtl8187_dev.o rtl8187_rtl8225.o
++	rtl8180_write_phy(dev, 0x19, 0x0);  /* CHESTLIM */
++	rtl8180_write_phy(dev, 0x1a, 0x9f); /* CHSQLIM  */
 +
-+obj-$(CONFIG_RTL8180)	+= rtl8180.o
- obj-$(CONFIG_RTL8187)	+= rtl8187.o
- 
- obj-$(CONFIG_ADM8211)	+= adm8211.o
-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-05 21:12:49.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl818x.h	2007-12-05 21:17:52.000000000 -0500
-@@ -58,13 +58,17 @@ struct rtl818x_csr {
- #define RTL818X_INT_TX_FO		(1 << 15)
- 	__le32	TX_CONF;
- #define RTL818X_TX_CONF_LOOPBACK_MAC	(1 << 17)
-+#define RTL818X_TX_CONF_LOOPBACK_CONT	(3 << 17)
- #define RTL818X_TX_CONF_NO_ICV		(1 << 19)
- #define RTL818X_TX_CONF_DISCW		(1 << 20)
-+#define RTL818X_TX_CONF_SAT_HWPLCP	(1 << 24)
- #define RTL818X_TX_CONF_R8180_ABCD	(2 << 25)
- #define RTL818X_TX_CONF_R8180_F		(3 << 25)
- #define RTL818X_TX_CONF_R8185_ABC	(4 << 25)
- #define RTL818X_TX_CONF_R8185_D		(5 << 25)
- #define RTL818X_TX_CONF_HWVER_MASK	(7 << 25)
-+#define RTL818X_TX_CONF_PROBE_DTS	(1 << 29)
-+#define RTL818X_TX_CONF_HW_SEQNUM	(1 << 30)
- #define RTL818X_TX_CONF_CW_MIN		(1 << 31)
- 	__le32	RX_CONF;
- #define RTL818X_RX_CONF_MONITOR		(1 <<  0)
-@@ -75,8 +79,12 @@ struct rtl818x_csr {
- #define RTL818X_RX_CONF_DATA		(1 << 18)
- #define RTL818X_RX_CONF_CTRL		(1 << 19)
- #define RTL818X_RX_CONF_MGMT		(1 << 20)
-+#define RTL818X_RX_CONF_ADDR3		(1 << 21)
-+#define RTL818X_RX_CONF_PM		(1 << 22)
- #define RTL818X_RX_CONF_BSSID		(1 << 23)
- #define RTL818X_RX_CONF_RX_AUTORESETPHY	(1 << 28)
-+#define RTL818X_RX_CONF_CSDM1		(1 << 29)
-+#define RTL818X_RX_CONF_CSDM2		(1 << 30)
- #define RTL818X_RX_CONF_ONLYERLPKT	(1 << 31)
- 	__le32	INT_TIMEOUT;
- 	__le32	TBDA;
-@@ -92,6 +100,7 @@ struct rtl818x_csr {
- 	u8	CONFIG0;
- 	u8	CONFIG1;
- 	u8	CONFIG2;
-+#define RTL818X_CONFIG2_ANTENNA_DIV	(1 << 6)
- 	__le32	ANAPARAM;
- 	u8	MSR;
- #define RTL818X_MSR_NO_LINK		(0 << 2)
-@@ -104,14 +113,17 @@ struct rtl818x_csr {
- #define RTL818X_CONFIG4_VCOOFF		(1 << 7)
- 	u8	TESTR;
- 	u8	reserved_9[2];
--	__le16	PGSELECT;
-+	u8	PGSELECT;
-+	u8	SECURITY;
- 	__le32	ANAPARAM2;
- 	u8	reserved_10[12];
- 	__le16	BEACON_INTERVAL;
- 	__le16	ATIM_WND;
- 	__le16	BEACON_INTERVAL_TIME;
- 	__le16	ATIMTR_INTERVAL;
--	u8	reserved_11[4];
-+	u8	PHY_DELAY;
-+	u8	CARRIER_SENSE_COUNTER;
-+	u8	reserved_11[2];
- 	u8	PHY[4];
- 	__le16	RFPinsOutput;
- 	__le16	RFPinsEnable;
-@@ -149,8 +161,10 @@ struct rtl818x_csr {
- 	u8	RETRY_CTR;
- 	u8	reserved_18[5];
- 	__le32	RDSAR;
--	u8	reserved_19[18];
--	u16	TALLY_CNT;
-+	u8	reserved_19[12];
-+	__le16	FEMR;
-+	u8	reserved_20[4];
-+	__le16	TALLY_CNT;
- 	u8	TALLY_SEL;
- } __attribute__((packed));
- 
++	max2820_rf_set_channel(dev, NULL);
++}

linux-2.6-wireless-pending.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.7 -r 1.8 linux-2.6-wireless-pending.patch
Index: linux-2.6-wireless-pending.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/linux-2.6-wireless-pending.patch,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- linux-2.6-wireless-pending.patch	6 Dec 2007 02:25:11 -0000	1.7
+++ linux-2.6-wireless-pending.patch	19 Dec 2007 21:19:48 -0000	1.8
@@ -1,7284 +1,6295 @@
-diff -up linux-2.6.23.noarch/drivers/net/wireless/rtl8187_rtl8225.c.orig linux-2.6.23.noarch/drivers/net/wireless/rtl8187_rtl8225.c
---- linux-2.6.23.noarch/drivers/net/wireless/rtl8187_rtl8225.c.orig	2007-10-09 16:31:38.000000000 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/rtl8187_rtl8225.c	2007-12-05 20:43:54.000000000 -0500
-@@ -283,8 +283,8 @@ static void rtl8225_rf_set_tx_power(stru
- 	u32 reg;
- 	int i;
+diff -up linux-2.6.23.noarch/include/linux/wireless.h.orig linux-2.6.23.noarch/include/linux/wireless.h
+--- linux-2.6.23.noarch/include/linux/wireless.h.orig	2007-10-09 16:31:38.000000000 -0400
++++ linux-2.6.23.noarch/include/linux/wireless.h	2007-12-19 14:14:57.000000000 -0500
+@@ -541,6 +541,16 @@
+ /* Maximum size of returned data */
+ #define IW_SCAN_MAX_DATA	4096	/* In bytes */
+ 
++/* Scan capability flags - in (struct iw_range *)->scan_capa */
++#define IW_SCAN_CAPA_NONE		0x00
++#define IW_SCAN_CAPA_ESSID		0x01
++#define IW_SCAN_CAPA_BSSID		0x02
++#define IW_SCAN_CAPA_CHANNEL	0x04
++#define IW_SCAN_CAPA_MODE		0x08
++#define IW_SCAN_CAPA_RATE		0x10
++#define IW_SCAN_CAPA_TYPE		0x20
++#define IW_SCAN_CAPA_TIME		0x40
++
+ /* Max number of char in custom event - use multiple of them if needed */
+ #define IW_CUSTOM_MAX		256	/* In bytes */
+ 
+@@ -963,6 +973,9 @@ struct	iw_range
+ 	__u16		old_num_channels;
+ 	__u8		old_num_frequency;
  
--	cck_power = priv->channels[channel - 1].val & 0xF;
--	ofdm_power = priv->channels[channel - 1].val >> 4;
-+	cck_power = priv->channels[channel - 1].val & 0xFF;
-+	ofdm_power = priv->channels[channel - 1].val >> 8;
++	/* Scan capabilities */
++	__u8		scan_capa; 	/* IW_SCAN_CAPA_* bit field */
++
+ 	/* Wireless event capability bitmasks */
+ 	__u32		event_capa[6];
  
- 	cck_power = min(cck_power, (u8)11);
- 	ofdm_power = min(ofdm_power, (u8)35);
-@@ -500,8 +500,8 @@ static void rtl8225z2_rf_set_tx_power(st
- 	u32 reg;
- 	int i;
+diff -up linux-2.6.23.noarch/include/linux/ieee80211.h.orig linux-2.6.23.noarch/include/linux/ieee80211.h
+--- linux-2.6.23.noarch/include/linux/ieee80211.h.orig	2007-12-19 13:32:44.000000000 -0500
++++ linux-2.6.23.noarch/include/linux/ieee80211.h	2007-12-19 13:33:39.000000000 -0500
+@@ -54,6 +54,8 @@
+ #define IEEE80211_STYPE_ACTION		0x00D0
  
--	cck_power = priv->channels[channel - 1].val & 0xF;
--	ofdm_power = priv->channels[channel - 1].val >> 4;
-+	cck_power = priv->channels[channel - 1].val & 0xFF;
-+	ofdm_power = priv->channels[channel - 1].val >> 8;
+ /* control */
++#define IEEE80211_STYPE_BACK_REQ	0x0080
++#define IEEE80211_STYPE_BACK		0x0090
+ #define IEEE80211_STYPE_PSPOLL		0x00A0
+ #define IEEE80211_STYPE_RTS		0x00B0
+ #define IEEE80211_STYPE_CTS		0x00C0
+@@ -81,18 +83,18 @@
  
- 	cck_power = min(cck_power, (u8)15);
- 	cck_power += priv->txpwr_base & 0xF;
-diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/b43legacy/rfkill.h
---- /dev/null	2007-12-05 20:11:19.574108129 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/b43legacy/rfkill.h	2007-12-05 20:43:54.000000000 -0500
-@@ -0,0 +1,59 @@
-+#ifndef B43legacy_RFKILL_H_
-+#define B43legacy_RFKILL_H_
-+
-+struct b43legacy_wldev;
-+
-+#ifdef CONFIG_B43LEGACY_RFKILL
-+
-+#include <linux/rfkill.h>
-+#include <linux/workqueue.h>
-+#include <linux/input-polldev.h>
+ 
+ /* miscellaneous IEEE 802.11 constants */
+-#define IEEE80211_MAX_FRAG_THRESHOLD	2346
+-#define IEEE80211_MAX_RTS_THRESHOLD	2347
++#define IEEE80211_MAX_FRAG_THRESHOLD	2352
++#define IEEE80211_MAX_RTS_THRESHOLD	2353
+ #define IEEE80211_MAX_AID		2007
+ #define IEEE80211_MAX_TIM_LEN		251
+-#define IEEE80211_MAX_DATA_LEN		2304
+ /* Maximum size for the MA-UNITDATA primitive, 802.11 standard section
+    6.2.1.1.2.
+ 
+-   The figure in section 7.1.2 suggests a body size of up to 2312
+-   bytes is allowed, which is a bit confusing, I suspect this
+-   represents the 2304 bytes of real data, plus a possible 8 bytes of
+-   WEP IV and ICV. (this interpretation suggested by Ramiro Barreiro) */
++   802.11e clarifies the figure in section 7.1.2. The frame body is
++   up to 2304 octets long (maximum MSDU size) plus any crypt overhead. */
++#define IEEE80211_MAX_DATA_LEN		2304
++/* 30 byte 4 addr hdr, 2 byte QoS, 2304 byte MSDU, 12 byte crypt, 4 byte FCS */
++#define IEEE80211_MAX_FRAME_LEN		2352
+ 
+ #define IEEE80211_MAX_SSID_LEN		32
+ 
+@@ -185,6 +187,25 @@ struct ieee80211_mgmt {
+ 					u8 new_chan;
+ 					u8 switch_count;
+ 				} __attribute__((packed)) chan_switch;
++				struct{
++					u8 action_code;
++					u8 dialog_token;
++					__le16 capab;
++					__le16 timeout;
++					__le16 start_seq_num;
++				} __attribute__((packed)) addba_req;
++				struct{
++					u8 action_code;
++					u8 dialog_token;
++					__le16 status;
++					__le16 capab;
++					__le16 timeout;
++				} __attribute__((packed)) addba_resp;
++				struct{
++					u8 action_code;
++					__le16 params;
++					__le16 reason_code;
++				} __attribute__((packed)) delba;
+ 			} u;
+ 		} __attribute__ ((packed)) action;
+ 	} u;
+@@ -205,6 +226,66 @@ struct ieee80211_cts {
+ 	u8 ra[6];
+ } __attribute__ ((packed));
+ 
++/**
++ * struct ieee80211_bar - HT Block Ack Request
++ *
++ * This structure refers to "HT BlockAckReq" as
++ * described in 802.11n draft section 7.2.1.7.1
++ */
++struct ieee80211_bar {
++	__le16 frame_control;
++	__le16 duration;
++	__u8 ra[6];
++	__u8 ta[6];
++	__u16 control;
++	__u16 start_seq_num;
++} __attribute__((packed));
 +
++/**
++ * struct ieee80211_ht_cap - HT capabilities
++ *
++ * This structure refers to "HT capabilities element" as
++ * described in 802.11n draft section 7.3.2.52
++ */
++struct ieee80211_ht_cap {
++	__le16 cap_info;
++	u8 ampdu_params_info;
++	u8 supp_mcs_set[16];
++	__le16 extended_ht_cap_info;
++	__le32 tx_BF_cap_info;
++	u8 antenna_selection_info;
++} __attribute__ ((packed));
 +
++/**
++ * struct ieee80211_ht_cap - HT additional information
++ *
++ * This structure refers to "HT information element" as
++ * described in 802.11n draft section 7.3.2.53
++ */
++struct ieee80211_ht_addt_info {
++	u8 control_chan;
++	u8 ht_param;
++	__le16 operation_mode;
++	__le16 stbc_param;
++	u8 basic_set[16];
++} __attribute__ ((packed));
 +
-+struct b43legacy_rfkill {
-+	/* The RFKILL subsystem data structure */
-+	struct rfkill *rfkill;
-+	/* The poll device for the RFKILL input button */
-+	struct input_polled_dev *poll_dev;
-+	/* Did initialization succeed? Used for freeing. */
-+	bool registered;
-+	/* The unique name of this rfkill switch */
-+	char name[sizeof("b43legacy-phy4294967295")];
++/* 802.11n HT capabilities masks */
++#define IEEE80211_HT_CAP_SUP_WIDTH		0x0002
++#define IEEE80211_HT_CAP_MIMO_PS		0x000C
++#define IEEE80211_HT_CAP_GRN_FLD		0x0010
++#define IEEE80211_HT_CAP_SGI_20			0x0020
[...122364 lines suppressed...]
-+#define SSB_SPROMSIZE_BYTES_R123	(SSB_SPROMSIZE_WORDS_R123 * sizeof(u16))
-+#define SSB_SPROMSIZE_BYTES_R4		(SSB_SPROMSIZE_WORDS_R4 * sizeof(u16))
- #define SSB_SPROM_BASE			0x1000
- #define SSB_SPROM_REVISION		0x107E
- #define  SSB_SPROM_REVISION_REV		0x00FF	/* SPROM Revision number */
- #define  SSB_SPROM_REVISION_CRC		0xFF00	/* SPROM CRC8 value */
- #define  SSB_SPROM_REVISION_CRC_SHIFT	8
+ ---------------------------
 +
- /* SPROM Revision 1 */
- #define SSB_SPROM1_SPID			0x1004	/* Subsystem Product ID for PCI */
- #define SSB_SPROM1_SVID			0x1006	/* Subsystem Vendor ID for PCI */
-@@ -215,7 +224,7 @@
- #define  SSB_SPROM1_AGAIN_A		0x00FF	/* A-PHY */
- #define  SSB_SPROM1_AGAIN_BG		0xFF00	/* B-PHY and G-PHY */
- #define  SSB_SPROM1_AGAIN_BG_SHIFT	8
--#define SSB_SPROM1_OEM			0x1076	/* 8 bytes OEM string (rev 1 only) */
++What:	bcm43xx wireless network driver
++When:	2.6.26
++Files:	drivers/net/wireless/bcm43xx
++Why:	This driver's functionality has been replaced by the
++	mac80211-based b43 and b43legacy drivers.
++Who:	John W. Linville <linville at tuxdriver.com>
 +
- /* SPROM Revision 2 (inherits from rev 1) */
- #define SSB_SPROM2_BFLHI		0x1038	/* Boardflags (high 16 bits) */
- #define SSB_SPROM2_MAXP_A		0x103A	/* A-PHY Max Power */
-@@ -232,7 +241,11 @@
- #define  SSB_SPROM2_OPO_VALUE		0x00FF
- #define  SSB_SPROM2_OPO_UNUSED		0xFF00
- #define SSB_SPROM2_CCODE		0x107C	/* Two char Country Code */
--/* SPROM Revision 3 (inherits from rev 2) */
++---------------------------
 +
-+/* SPROM Revision 3 (inherits most data from rev 2) */
-+#define SSB_SPROM3_IL0MAC		0x104A	/* 6 bytes MAC address for 802.11b/g */
-+#define SSB_SPROM3_ET0MAC		0x1050	/* 6 bytes MAC address for Ethernet ?? */
-+#define SSB_SPROM3_ET1MAC		0x1050	/* 6 bytes MAC address for 802.11a ?? */
- #define SSB_SPROM3_OFDMAPO		0x102C	/* A-PHY OFDM Mid Power Offset (4 bytes, BigEndian) */
- #define SSB_SPROM3_OFDMALPO		0x1030	/* A-PHY OFDM Low Power Offset (4 bytes, BigEndian) */
- #define SSB_SPROM3_OFDMAHPO		0x1034	/* A-PHY OFDM High Power Offset (4 bytes, BigEndian) */
-@@ -251,6 +264,48 @@
- #define  SSB_SPROM3_CCKPO_11M_SHIFT	12
- #define  SSB_SPROM3_OFDMGPO		0x107A	/* G-PHY OFDM Power Offset (4 bytes, BigEndian) */
- 
-+/* SPROM Revision 4 		entries with ?? in comment are unknown */
-+#define SSB_SPROM4_IL0MAC		0x104C	/* 6 byte MAC address for a/b/g/n */
-+#define SSB_SPROM4_ET0MAC		0x1018	/* 6 bytes MAC address for Ethernet ?? */
-+#define SSB_SPROM4_ET1MAC		0x1018	/* 6 bytes MAC address for 802.11a ?? */
-+#define SSB_SPROM4_ETHPHY		0x105A	/* Ethernet PHY settings ?? */
-+#define  SSB_SPROM4_ETHPHY_ET0A		0x001F	/* MII Address for enet0 */
-+#define  SSB_SPROM4_ETHPHY_ET1A		0x03E0	/* MII Address for enet1 */
-+#define  SSB_SPROM4_ETHPHY_ET1A_SHIFT	5
-+#define  SSB_SPROM4_ETHPHY_ET0M		(1<<14)	/* MDIO for enet0 */
-+#define  SSB_SPROM4_ETHPHY_ET1M		(1<<15)	/* MDIO for enet1 */
-+#define SSB_SPROM4_CCODE		0x1052	/* Country Code (2 bytes) */
-+#define SSB_SPROM4_ANT_A		0x105D  /* A Antennas */
-+#define SSB_SPROM4_ANT_BG		0x105C  /* B/G Antennas */
-+#define SSB_SPROM4_BFLLO		0x1044	/* Boardflags (low 16 bits) */
-+#define SSB_SPROM4_AGAIN		0x105E	/* Antenna Gain (in dBm Q5.2) */
-+#define  SSB_SPROM4_AGAIN_0		0x00FF	/* Antenna 0 */
-+#define  SSB_SPROM4_AGAIN_1		0xFF00	/* Antenna 1 */
-+#define  SSB_SPROM4_AGAIN_1_SHIFT	8
-+#define SSB_SPROM4_BFLHI		0x1046  /* Board Flags Hi */
-+#define SSB_SPROM4_MAXP_BG		0x1080  /* Max Power BG in path 1 */
-+#define  SSB_SPROM4_MAXP_BG_MASK	0x00FF  /* Mask for Max Power BG */
-+#define  SSB_SPROM4_ITSSI_BG		0xFF00	/* Mask for path 1 itssi_bg */
-+#define  SSB_SPROM4_ITSSI_BG_SHIFT	8
-+#define SSB_SPROM4_MAXP_A		0x108A  /* Max Power A in path 1 */
-+#define  SSB_SPROM4_MAXP_A_MASK		0x00FF  /* Mask for Max Power A */
-+#define  SSB_SPROM4_ITSSI_A		0xFF00	/* Mask for path 1 itssi_a */
-+#define  SSB_SPROM4_ITSSI_A_SHIFT	8
-+#define SSB_SPROM4_GPIOA		0x1056	/* Gen. Purpose IO # 0 and 1 */
-+#define  SSB_SPROM4_GPIOA_P0		0x00FF	/* Pin 0 */
-+#define  SSB_SPROM4_GPIOA_P1		0xFF00	/* Pin 1 */
-+#define  SSB_SPROM4_GPIOA_P1_SHIFT	8
-+#define SSB_SPROM4_GPIOB		0x1058	/* Gen. Purpose IO # 2 and 3 */
-+#define  SSB_SPROM4_GPIOB_P2		0x00FF	/* Pin 2 */
-+#define  SSB_SPROM4_GPIOB_P3		0xFF00	/* Pin 3 */
-+#define  SSB_SPROM4_GPIOB_P3_SHIFT	8
-+#define SSB_SPROM4_PA0B0		0x1082	/* The paXbY locations are */
-+#define SSB_SPROM4_PA0B1		0x1084	/*   only guesses */
-+#define SSB_SPROM4_PA0B2		0x1086
-+#define SSB_SPROM4_PA1B0		0x108E
-+#define SSB_SPROM4_PA1B1		0x1090
-+#define SSB_SPROM4_PA1B2		0x1092
++What:	iee80211 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>
 +
- /* Values for SSB_SPROM1_BINF_CCODE */
- enum {
- 	SSB_SPROM1CCODE_WORLD = 0,
-diff -up linux-2.6.23.noarch/include/linux/ssb/ssb.h.orig linux-2.6.23.noarch/include/linux/ssb/ssb.h
---- linux-2.6.23.noarch/include/linux/ssb/ssb.h.orig	2007-12-05 20:43:11.000000000 -0500
-+++ linux-2.6.23.noarch/include/linux/ssb/ssb.h	2007-12-05 20:43:54.000000000 -0500
-@@ -15,22 +15,14 @@ struct pcmcia_device;
- struct ssb_bus;
- struct ssb_driver;
- 
--
--struct ssb_sprom_r1 {
--	u16 pci_spid;		/* Subsystem Product ID for PCI */
--	u16 pci_svid;		/* Subsystem Vendor ID for PCI */
--	u16 pci_pid;		/* Product ID for PCI */
-+struct ssb_sprom {
-+	u8 revision;
- 	u8 il0mac[6];		/* MAC address for 802.11b/g */
- 	u8 et0mac[6];		/* MAC address for Ethernet */
- 	u8 et1mac[6];		/* MAC address for 802.11a */
--	u8 et0phyaddr:5;	/* MII address for enet0 */
--	u8 et1phyaddr:5;	/* MII address for enet1 */
--	u8 et0mdcport:1;	/* MDIO for enet0 */
--	u8 et1mdcport:1;	/* MDIO for enet1 */
--	u8 board_rev;		/* Board revision */
--	u8 country_code:4;	/* Country Code */
--	u8 antenna_a:2;		/* Antenna 0/1 available for A-PHY */
--	u8 antenna_bg:2;	/* Antenna 0/1 available for B-PHY and G-PHY */
-+	u8 et0phyaddr;		/* MII address for enet0 */
-+	u8 et1phyaddr;		/* MII address for enet1 */
-+	u8 country_code;	/* Country Code */
- 	u16 pa0b0;
- 	u16 pa0b1;
- 	u16 pa0b2;
-@@ -41,61 +33,15 @@ struct ssb_sprom_r1 {
- 	u8 gpio1;		/* GPIO pin 1 */
- 	u8 gpio2;		/* GPIO pin 2 */
- 	u8 gpio3;		/* GPIO pin 3 */
--	u16 maxpwr_a;		/* A-PHY Power Amplifier Max Power (in dBm Q5.2) */
--	u16 maxpwr_bg;		/* B/G-PHY Power Amplifier Max Power (in dBm Q5.2) */
-+	u16 maxpwr_a;		/* A-PHY Amplifier Max Power (in dBm Q5.2) */
-+	u16 maxpwr_bg;		/* B/G-PHY Amplifier Max Power (in dBm Q5.2) */
- 	u8 itssi_a;		/* Idle TSSI Target for A-PHY */
- 	u8 itssi_bg;		/* Idle TSSI Target for B/G-PHY */
- 	u16 boardflags_lo;	/* Boardflags (low 16 bits) */
- 	u8 antenna_gain_a;	/* A-PHY Antenna gain (in dBm Q5.2) */
- 	u8 antenna_gain_bg;	/* B/G-PHY Antenna gain (in dBm Q5.2) */
--	u8 oem[8];		/* OEM string (rev 1 only) */
--};
--
--struct ssb_sprom_r2 {
--	u16 boardflags_hi;	/* Boardflags (high 16 bits) */
--	u8 maxpwr_a_lo;		/* A-PHY Max Power Low */
--	u8 maxpwr_a_hi;		/* A-PHY Max Power High */
--	u16 pa1lob0;		/* A-PHY PA Low Settings */
--	u16 pa1lob1;		/* A-PHY PA Low Settings */
--	u16 pa1lob2;		/* A-PHY PA Low Settings */
--	u16 pa1hib0;		/* A-PHY PA High Settings */
--	u16 pa1hib1;		/* A-PHY PA High Settings */
--	u16 pa1hib2;		/* A-PHY PA High Settings */
--	u8 ofdm_pwr_off;	/* OFDM Power Offset from CCK Level */
--	u8 country_str[2];	/* Two char Country Code */
--};
- 
--struct ssb_sprom_r3 {
--	u32 ofdmapo;		/* A-PHY OFDM Mid Power Offset */
--	u32 ofdmalpo;		/* A-PHY OFDM Low Power Offset */
--	u32 ofdmahpo;		/* A-PHY OFDM High Power Offset */
--	u8 gpioldc_on_cnt;	/* GPIO LED Powersave Duty Cycle ON count */
--	u8 gpioldc_off_cnt;	/* GPIO LED Powersave Duty Cycle OFF count */
--	u8 cckpo_1M:4;		/* CCK Power Offset for Rate 1M */
--	u8 cckpo_2M:4;		/* CCK Power Offset for Rate 2M */
--	u8 cckpo_55M:4;		/* CCK Power Offset for Rate 5.5M */
--	u8 cckpo_11M:4;		/* CCK Power Offset for Rate 11M */
--	u32 ofdmgpo;		/* G-PHY OFDM Power Offset */
--};
--
--struct ssb_sprom_r4 {
--	/* TODO */
--};
--
--struct ssb_sprom {
--	u8 revision;
--	u8 crc;
--	/* The valid r# fields are selected by the "revision".
--	 * Revision 3 and lower inherit from lower revisions.
--	 */
--	union {
--		struct {
--			struct ssb_sprom_r1 r1;
--			struct ssb_sprom_r2 r2;
--			struct ssb_sprom_r3 r3;
--		};
--		struct ssb_sprom_r4 r4;
--	};
-+	/* TODO - add any parameters needed from rev 2, 3, or 4 SPROMs */
- };
- 
- /* Information about the PCB the circuitry is soldered on. */
-@@ -288,6 +234,7 @@ struct ssb_bus {
- 	/* ID information about the Chip. */
- 	u16 chip_id;
- 	u16 chip_rev;
-+	u16 sprom_size;		/* number of words in sprom */
- 	u8 chip_package;
- 
- 	/* List of devices (cores) on the backplane. */
++---------------------------

linux-2.6-wireless.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.16 -r 1.17 linux-2.6-wireless.patch
Index: linux-2.6-wireless.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/linux-2.6-wireless.patch,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- linux-2.6-wireless.patch	6 Dec 2007 02:25:11 -0000	1.16
+++ linux-2.6-wireless.patch	19 Dec 2007 21:19:50 -0000	1.17
@@ -1,135718 +1,135876 @@
-diff -up linux-2.6.23.noarch/scripts/mod/file2alias.c.orig linux-2.6.23.noarch/scripts/mod/file2alias.c
---- linux-2.6.23.noarch/scripts/mod/file2alias.c.orig	2007-10-09 16:31:38.000000000 -0400
-+++ linux-2.6.23.noarch/scripts/mod/file2alias.c	2007-12-05 20:41:27.000000000 -0500
-@@ -484,6 +484,21 @@ static int do_parisc_entry(const char *f
- 	return 1;
- }
+diff -up linux-2.6.23.noarch/CREDITS.orig linux-2.6.23.noarch/CREDITS
+--- linux-2.6.23.noarch/CREDITS.orig	2007-12-17 21:50:24.000000000 -0500
++++ linux-2.6.23.noarch/CREDITS	2007-12-17 21:53:57.000000000 -0500
+@@ -665,6 +665,11 @@ D: Minor updates to SCSI types, added /p
+ S: (ask for current address)
+ S: USA
  
-+/* Looks like: ssb:vNidNrevN. */
-+static int do_ssb_entry(const char *filename,
-+			struct ssb_device_id *id, char *alias)
-+{
-+	id->vendor = TO_NATIVE(id->vendor);
-+	id->coreid = TO_NATIVE(id->coreid);
-+	id->revision = TO_NATIVE(id->revision);
-+
-+	strcpy(alias, "ssb:");
-+	ADD(alias, "v", id->vendor != SSB_ANY_VENDOR, id->vendor);
-+	ADD(alias, "id", id->coreid != SSB_ANY_ID, id->coreid);
-+	ADD(alias, "rev", id->revision != SSB_ANY_REV, id->revision);
-+	return 1;
-+}
++N: Robin Cornelius
++E: robincornelius at users.sourceforge.net
++D: Ralink rt2x00 WLAN driver
++S: Cornwall, U.K.
 +
- /* Ignore any prefix, eg. v850 prepends _ */
- static inline int sym_is(const char *symbol, const char *name)
- {
-@@ -599,6 +614,10 @@ void handle_moddevtable(struct module *m
- 		do_table(symval, sym->st_size,
- 			 sizeof(struct parisc_device_id), "parisc",
- 			 do_parisc_entry, mod);
-+	else if (sym_is(symname, "__mod_ssb_device_table"))
-+		do_table(symval, sym->st_size,
-+			 sizeof(struct ssb_device_id), "ssb",
-+			 do_ssb_entry, mod);
- }
+ N: Mark Corner
+ E: mcorner at umich.edu
+ W: http://www.eecs.umich.edu/~mcorner/
+@@ -679,6 +684,11 @@ D: Kernel module SMART utilities
+ S: Santa Cruz, California
+ S: USA
  
- /* Now add out buffered information to the generated C source */
-diff -up linux-2.6.23.noarch/drivers/net/wireless/arlan-proc.c.orig linux-2.6.23.noarch/drivers/net/wireless/arlan-proc.c
---- linux-2.6.23.noarch/drivers/net/wireless/arlan-proc.c.orig	2007-10-09 16:31:38.000000000 -0400
-+++ linux-2.6.23.noarch/drivers/net/wireless/arlan-proc.c	2007-12-05 20:41:27.000000000 -0500
-@@ -435,7 +435,7 @@ static int arlan_sysctl_info(ctl_table *
- 		goto final;
- 	}
- 	else
--		priva = arlan_device[devnum]->priv;
-+		priva = netdev_priv(arlan_device[devnum]);
++N: Luis Correia
++E: lfcorreia at users.sf.net
++D: Ralink rt2x00 WLAN driver
++S: Belas, Portugal
++
+ N: Alan Cox
+ W: http://www.linux.org.uk/diary/
+ D: Linux Networking (0.99.10->2.0.29)
+@@ -833,6 +843,12 @@ S: Lancs
+ S: PR4 6AX
+ S: United Kingdom
  
- 	if (priva == NULL)
- 	{
-@@ -654,7 +654,7 @@ static int arlan_sysctl_info161719(ctl_t
- 		goto final;
- 	}
- 	else
--		priva = arlan_device[devnum]->priv;
-+		priva = netdev_priv(arlan_device[devnum]);
- 	if (priva == NULL)
- 	{
- 		printk(KERN_WARNING " Could not find the device private in arlan procsys, bad\n ");
-@@ -688,7 +688,7 @@ static int arlan_sysctl_infotxRing(ctl_t
- 		  goto final;
- 	}
- 	else
--		priva = arlan_device[devnum]->priv;
-+		priva = netdev_priv(arlan_device[devnum]);
- 	if (priva == NULL)
- 	{
- 		printk(KERN_WARNING " Could not find the device private in arlan procsys, bad\n ");
-@@ -716,7 +716,7 @@ static int arlan_sysctl_inforxRing(ctl_t
- 		  pos += sprintf(arlan_drive_info + pos, "No device found here \n");
- 		  goto final;
- 	} else
--		priva = arlan_device[devnum]->priv;
-+		priva = netdev_priv(arlan_device[devnum]);
- 	if (priva == NULL)
- 	{
- 		printk(KERN_WARNING " Could not find the device private in arlan procsys, bad\n ");
-@@ -745,7 +745,7 @@ static int arlan_sysctl_info18(ctl_table
- 		goto final;
- 	}
- 	else
--		priva = arlan_device[devnum]->priv;
-+		priva = netdev_priv(arlan_device[devnum]);
- 	if (priva == NULL)
- 	{
- 		printk(KERN_WARNING " Could not find the device private in arlan procsys, bad\n ");
-@@ -780,7 +780,7 @@ static int arlan_configure(ctl_table * c
- 	}
- 	else if (arlan_device[devnum] != NULL)
- 	{
--		  priv = arlan_device[devnum]->priv;
-+		  priv = netdev_priv(arlan_device[devnum]);
++N: Ivo van Doorn
++E: IvDoorn at gmail.com
++W: http://www.mendiosus.nl
++D: Ralink rt2x00 WLAN driver
++S: Haarlem, The Netherlands
++
+ N: John G Dorsey
+ E: john+ at cs.cmu.edu
+ D: ARM Linux ports to Assabet/Neponset, Spot
+@@ -3517,6 +3533,12 @@ S: Maastrichterweg 63
+ S: 5554 GG Valkenswaard
+ S: The Netherlands
  
- 		  arlan_command(arlan_device[devnum], ARLAN_COMMAND_CLEAN_AND_CONF);
- 	}
-@@ -805,7 +805,7 @@ static int arlan_sysctl_reset(ctl_table 
- 	}
- 	else if (arlan_device[devnum] != NULL)
- 	{
--		priv = arlan_device[devnum]->priv;
-+		priv = netdev_priv(arlan_device[devnum]);
- 		arlan_command(arlan_device[devnum], ARLAN_COMMAND_CLEAN_AND_RESET);
++N: Mark Wallis
++E: mwallis at serialmonkey.com
++W: http://mark.serialmonkey.com
++D: Ralink rt2x00 WLAN driver
++S: Newcastle, Australia
++
+ N: Peter Shaobo Wang
+ E: pwang at mmdcorp.com
+ W: http://www.mmdcorp.com/pw/linux
+@@ -3651,6 +3673,15 @@ S: Alte Regensburger Str. 11a
+ S: 93149 Nittenau
+ S: Germany
  
- 	} else
-diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/p54pci.h
---- /dev/null	2007-12-05 20:11:19.574108129 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/p54pci.h	2007-12-05 20:41:27.000000000 -0500
-@@ -0,0 +1,106 @@
-+#ifndef PRISM54PCI_H
-+#define PRISM54PCI_H
++N: Gertjan van Wingerde
++E: gwingerde at home.nl
++D: Ralink rt2x00 WLAN driver
++D: Minix V2 file-system
++D: Misc fixes
++S: Geessinkweg 177
++S: 7544 TX Enschede
++S: The Netherlands
 +
-+/*
-+ * Defines for PCI based mac80211 Prism54 driver
+ N: Lars Wirzenius
+ E: liw at iki.fi
+ D: Linux System Administrator's Guide, author, former maintainer
+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-10-09 16:31:38.000000000 -0400
++++ linux-2.6.23.noarch/include/linux/nl80211.h	2007-12-17 21:53:57.000000000 -0500
+@@ -7,7 +7,97 @@
+  */
+ 
+ /**
++ * enum nl80211_commands - supported nl80211 commands
 + *
-+ * Copyright (c) 2006, Michael Wu <flamingice at sourmilk.net>
++ * @NL80211_CMD_UNSPEC: unspecified command to catch errors
 + *
-+ * Based on the islsm (softmac prism54) driver, which is:
-+ * Copyright 2004-2006 Jean-Baptiste Note <jbnote at gmail.com>, et al.
++ * @NL80211_CMD_GET_WIPHY: request information about a wiphy or dump request
++ *	to get a list of all present wiphys.
++ * @NL80211_CMD_SET_WIPHY: set wiphy name, needs %NL80211_ATTR_WIPHY and
++ *	%NL80211_ATTR_WIPHY_NAME.
[...266557 lines suppressed...]
-+ *	%NL80211_ATTR_IFNAME.
-+ * @NL80211_CMD_DEL_INTERFACE: Virtual interface was deleted, has attributes
-+ *	%NL80211_ATTR_IFINDEX and %NL80211_ATTR_WIPHY. Can also be sent from
-+ *	userspace to request deletion of a virtual interface, then requires
-+ *	attribute %NL80211_ATTR_IFINDEX.
-+ *
-+ * @NL80211_CMD_MAX: highest used command number
-+ * @__NL80211_CMD_AFTER_LAST: internal use
-+ */
-+enum nl80211_commands {
-+/* don't change the order or add anything inbetween, this is ABI! */
-+	NL80211_CMD_UNSPEC,
++		err = pci_read_config_dword(bus->host_pci, SSB_PCI_IRQMASK, &tmp);
++		if (err)
++			goto out;
++		tmp |= coremask << 8;
++		err = pci_write_config_dword(bus->host_pci, SSB_PCI_IRQMASK, tmp);
++		if (err)
++			goto out;
++	} else {
++		u32 intvec;
 +
-+	NL80211_CMD_GET_WIPHY,		/* can dump */
-+	NL80211_CMD_SET_WIPHY,
-+	NL80211_CMD_NEW_WIPHY,
-+	NL80211_CMD_DEL_WIPHY,
++		intvec = ssb_read32(pdev, SSB_INTVEC);
++		if ((bus->chip_id & 0xFF00) == 0x4400) {
++			/* Workaround: On the BCM44XX the BPFLAG routing
++			 * bit is wrong. Use a hardcoded constant. */
++			intvec |= 0x00000002;
++		} else {
++			tmp = ssb_read32(dev, SSB_TPSFLAG);
++			tmp &= SSB_TPSFLAG_BPFLAG;
++			intvec |= tmp;
++		}
++		ssb_write32(pdev, SSB_INTVEC, intvec);
++	}
 +
-+	NL80211_CMD_GET_INTERFACE,	/* can dump */
-+	NL80211_CMD_SET_INTERFACE,
-+	NL80211_CMD_NEW_INTERFACE,
-+	NL80211_CMD_DEL_INTERFACE,
++	/* Setup PCIcore operation. */
++	if (pc->setup_done)
++		goto out;
++	if (pdev->id.coreid == SSB_DEV_PCI) {
++		tmp = pcicore_read32(pc, SSB_PCICORE_SBTOPCI2);
++		tmp |= SSB_PCICORE_SBTOPCI_PREF;
++		tmp |= SSB_PCICORE_SBTOPCI_BURST;
++		pcicore_write32(pc, SSB_PCICORE_SBTOPCI2, tmp);
 +
-+	/* add commands here */
++		if (pdev->id.revision < 5) {
++			tmp = ssb_read32(pdev, SSB_IMCFGLO);
++			tmp &= ~SSB_IMCFGLO_SERTO;
++			tmp |= 2;
++			tmp &= ~SSB_IMCFGLO_REQTO;
++			tmp |= 3 << SSB_IMCFGLO_REQTO_SHIFT;
++			ssb_write32(pdev, SSB_IMCFGLO, tmp);
++			ssb_commit_settings(bus);
++		} else if (pdev->id.revision >= 11) {
++			tmp = pcicore_read32(pc, SSB_PCICORE_SBTOPCI2);
++			tmp |= SSB_PCICORE_SBTOPCI_MRM;
++			pcicore_write32(pc, SSB_PCICORE_SBTOPCI2, tmp);
++		}
++	} else {
++		WARN_ON(pdev->id.coreid != SSB_DEV_PCIE);
++		//TODO: Better make defines for all these magic PCIE values.
++		if ((pdev->id.revision == 0) || (pdev->id.revision == 1)) {
++			/* TLP Workaround register. */
++			tmp = ssb_pcie_read(pc, 0x4);
++			tmp |= 0x8;
++			ssb_pcie_write(pc, 0x4, tmp);
++		}
++		if (pdev->id.revision == 0) {
++			const u8 serdes_rx_device = 0x1F;
 +
-+	/* used to define NL80211_CMD_MAX below */
-+	__NL80211_CMD_AFTER_LAST,
-+	NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
-+};
++			ssb_pcie_mdio_write(pc, serdes_rx_device,
++					    2 /* Timer */, 0x8128);
++			ssb_pcie_mdio_write(pc, serdes_rx_device,
++					    6 /* CDR */, 0x0100);
++			ssb_pcie_mdio_write(pc, serdes_rx_device,
++					    7 /* CDR BW */, 0x1466);
++		} else if (pdev->id.revision == 1) {
++			/* DLLP Link Control register. */
++			tmp = ssb_pcie_read(pc, 0x100);
++			tmp |= 0x40;
++			ssb_pcie_write(pc, 0x100, tmp);
++		}
++	}
++	pc->setup_done = 1;
++out:
++	return err;
++}
++EXPORT_SYMBOL(ssb_pcicore_dev_irqvecs_enable);
+diff -up linux-2.6.23.noarch/Documentation/networking/mac80211-injection.txt.orig linux-2.6.23.noarch/Documentation/networking/mac80211-injection.txt
+--- linux-2.6.23.noarch/Documentation/networking/mac80211-injection.txt.orig	2007-10-09 16:31:38.000000000 -0400
++++ linux-2.6.23.noarch/Documentation/networking/mac80211-injection.txt	2007-12-17 21:53:57.000000000 -0500
+@@ -13,15 +13,35 @@ The radiotap format is discussed in
+ ./Documentation/networking/radiotap-headers.txt.
+ 
+ Despite 13 radiotap argument types are currently defined, most only make sense
+-to appear on received packets.  Currently three kinds of argument are used by
+-the injection code, although it knows to skip any other arguments that are
+-present (facilitating replay of captured radiotap headers directly):
++to appear on received packets.  The following information is parsed from the
++radiotap headers and used to control injection:
+ 
+- - IEEE80211_RADIOTAP_RATE - u8 arg in 500kbps units (0x02 --> 1Mbps)
++ * IEEE80211_RADIOTAP_RATE
+ 
+- - IEEE80211_RADIOTAP_ANTENNA - u8 arg, 0x00 = ant1, 0x01 = ant2
++   rate in 500kbps units, automatic if invalid or not present
+ 
+- - IEEE80211_RADIOTAP_DBM_TX_POWER - u8 arg, dBm
 +
++ * IEEE80211_RADIOTAP_ANTENNA
 +
-+/**
-+ * enum nl80211_attrs - nl80211 netlink attributes
-+ *
-+ * @NL80211_ATTR_UNSPEC: unspecified attribute to catch errors
-+ *
-+ * @NL80211_ATTR_WIPHY: index of wiphy to operate on, cf.
-+ *	/sys/class/ieee80211/<phyname>/index
-+ * @NL80211_ATTR_WIPHY_NAME: wiphy name (used for renaming)
-+ *
-+ * @NL80211_ATTR_IFINDEX: network interface index of the device to operate on
-+ * @NL80211_ATTR_IFNAME: network interface name
-+ * @NL80211_ATTR_IFTYPE: type of virtual interface, see &enum nl80211_iftype
-+ *
-+ * @NL80211_ATTR_MAX: highest attribute number currently defined
-+ * @__NL80211_ATTR_AFTER_LAST: internal use
-+ */
-+enum nl80211_attrs {
-+/* don't change the order or add anything inbetween, this is ABI! */
-+	NL80211_ATTR_UNSPEC,
++   antenna to use, automatic if not present
 +
-+	NL80211_ATTR_WIPHY,
-+	NL80211_ATTR_WIPHY_NAME,
 +
-+	NL80211_ATTR_IFINDEX,
-+	NL80211_ATTR_IFNAME,
-+	NL80211_ATTR_IFTYPE,
++ * IEEE80211_RADIOTAP_DBM_TX_POWER
 +
-+	/* add attributes here, update the policy in nl80211.c */
++   transmit power in dBm, automatic if not present
 +
-+	__NL80211_ATTR_AFTER_LAST,
-+	NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
-+};
 +
-+/**
-  * enum nl80211_iftype - (virtual) interface types
-+ *
-  * @NL80211_IFTYPE_UNSPECIFIED: unspecified type, driver decides
-  * @NL80211_IFTYPE_ADHOC: independent BSS member
-  * @NL80211_IFTYPE_STATION: managed BSS member
-@@ -15,9 +105,10 @@
-  * @NL80211_IFTYPE_AP_VLAN: VLAN interface for access points
-  * @NL80211_IFTYPE_WDS: wireless distribution interface
-  * @NL80211_IFTYPE_MONITOR: monitor interface receiving all frames
-+ * @NL80211_IFTYPE_MAX: highest interface type number currently defined
-  * @__NL80211_IFTYPE_AFTER_LAST: internal use
-  *
-- * These values are used with the NL80211_ATTR_IFTYPE
-+ * These values are used with the %NL80211_ATTR_IFTYPE
-  * to set the type of an interface.
-  *
-  */
-@@ -31,8 +122,8 @@ enum nl80211_iftype {
- 	NL80211_IFTYPE_MONITOR,
++ * IEEE80211_RADIOTAP_FLAGS
++
++   IEEE80211_RADIOTAP_F_FCS: FCS will be removed and recalculated
++   IEEE80211_RADIOTAP_F_WEP: frame will be encrypted if key available
++   IEEE80211_RADIOTAP_F_FRAG: frame will be fragmented if longer than the
++			      current fragmentation threshold. Note that
++			      this flag is only reliable when software
++			      fragmentation is enabled)
++
++The injection code can also skip all other currently defined radiotap fields
++facilitating replay of captured radiotap headers directly.
  
- 	/* keep last */
--	__NL80211_IFTYPE_AFTER_LAST
-+	__NL80211_IFTYPE_AFTER_LAST,
-+	NL80211_IFTYPE_MAX = __NL80211_IFTYPE_AFTER_LAST - 1
- };
--#define NL80211_IFTYPE_MAX (__NL80211_IFTYPE_AFTER_LAST - 1)
+ Here is an example valid radiotap header defining these three parameters
  
- #endif /* __LINUX_NL80211_H */




More information about the fedora-extras-commits mailing list