rpms/kernel/F-7 linux-2.6-ath5k-use-soft-wep.patch, NONE, 1.1 linux-2.6-rtl8180.patch, NONE, 1.1 linux-2.6-wireless-pending.patch, 1.6, 1.7 linux-2.6-zd1211rw-module-alias.patch, NONE, 1.1 kernel-2.6.spec, 1.3395, 1.3396 linux-2.6-at76.patch, 1.1, 1.2 linux-2.6-ath5k.patch, 1.6, 1.7 linux-2.6-wireless.patch, 1.15, 1.16 linux-2.6-b43-use-old-fw.patch, 1.2, NONE linux-2.6-iwlwifi-cve-2007-5938.patch, 1.1, NONE linux-2.6-zd1211rw-mac80211.patch, 1.2, NONE

John W. Linville (linville) fedora-extras-commits at redhat.com
Thu Dec 6 02:26:14 UTC 2007


Author: linville

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

Modified Files:
	kernel-2.6.spec linux-2.6-at76.patch linux-2.6-ath5k.patch 
	linux-2.6-wireless.patch 
Added Files:
	linux-2.6-ath5k-use-soft-wep.patch linux-2.6-rtl8180.patch 
	linux-2.6-wireless-pending.patch 
	linux-2.6-zd1211rw-module-alias.patch 
Removed Files:
	linux-2.6-b43-use-old-fw.patch 
	linux-2.6-iwlwifi-cve-2007-5938.patch 
	linux-2.6-zd1211rw-mac80211.patch 
Log Message:
Update wireless bits from current upstream (resync w/ F-8) ; Drop patch to use "old format" firwmare for b43 (unmaintainable)

linux-2.6-ath5k-use-soft-wep.patch:

--- NEW FILE linux-2.6-ath5k-use-soft-wep.patch ---
diff -up linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.c.orig linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.c
--- linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.c.orig	2007-12-05 20:56:11.000000000 -0500
+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/base.c	2007-12-05 20:56:33.000000000 -0500
@@ -2730,7 +2730,6 @@ ath5k_set_key(struct ieee80211_hw *hw, e
 
 	switch(key->alg) {
 	case ALG_WEP:
-		break;
 	case ALG_TKIP:
 	case ALG_CCMP:
 		return -EOPNOTSUPP;

linux-2.6-rtl8180.patch:

--- NEW FILE linux-2.6-rtl8180.patch ---
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 @@
+
+/*
+ * Linux device driver for RTL8180 / RTL8185
+ *
+ * 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.
+ *
+ * Thanks to Realtek for their support!
+ *
+ * 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 <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) },
+	{ }
+};
+
+MODULE_DEVICE_TABLE(pci, rtl8180_table);
+
+void rtl8180_write_phy(struct ieee80211_hw *dev, u8 addr, u32 data)
+{
+	struct rtl8180_priv *priv = dev->priv;
+	int i = 10;
+	u32 buf;
+
+	buf = (data << 8) | addr;
+
+	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;
+	}
+}
+
+static void rtl8180_handle_rx(struct ieee80211_hw *dev)
+{
+	struct rtl8180_priv *priv = dev->priv;
+	unsigned int count = 32;
+
+	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 (flags & RTL8180_RX_DESC_FLAG_OWN)
+			return;
+
+		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;
+
+			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);
+
+			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);
+
+			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);
+		}
+
+	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;
+	}
+}
+
+static void rtl8180_handle_tx(struct ieee80211_hw *dev, unsigned int prio)
+{
+	struct rtl8180_priv *priv = dev->priv;
+	struct rtl8180_tx_ring *ring = &priv->tx_ring[prio];
+
+	while (skb_queue_len(&ring->queue)) {
+		struct rtl8180_tx_desc *entry = &ring->desc[ring->idx];
+		struct sk_buff *skb;
+		struct ieee80211_tx_status status = { {0} };
+		struct ieee80211_tx_control *control;
+		u32 flags = le32_to_cpu(entry->flags);
+
+		if (flags & RTL8180_TX_DESC_FLAG_OWN)
+			return;
+
+		ring->idx = (ring->idx + 1) % ring->entries;
+		skb = __skb_dequeue(&ring->queue);
+		pci_unmap_single(priv->pdev, le32_to_cpu(entry->tx_buf),
+				 skb->len, PCI_DMA_TODEVICE);
+
+		control = *((struct ieee80211_tx_control **)skb->cb);
+		if (control)
+			memcpy(&status.control, control, sizeof(*control));
+		kfree(control);
+
+		if (!(status.control.flags & IEEE80211_TXCTL_NO_ACK)) {
+			if (flags & RTL8180_TX_DESC_FLAG_TX_OK)
+				status.flags = IEEE80211_TX_STATUS_ACK;
+			else
+				status.excessive_retries = 1;
+		}
+		status.retry_count = flags & 0xFF;
+
+		ieee80211_tx_status_irqsafe(dev, skb, &status);
+		if (ring->entries - skb_queue_len(&ring->queue) == 2)
+			ieee80211_wake_queue(dev, prio);
+	}
+}
+
+static irqreturn_t rtl8180_interrupt(int irq, void *dev_id)
+{
+	struct ieee80211_hw *dev = dev_id;
+	struct rtl8180_priv *priv = dev->priv;
+	u16 reg;
+
+	spin_lock(&priv->lock);
+	reg = rtl818x_ioread16(priv, &priv->map->INT_STATUS);
+	if (unlikely(reg == 0xFFFF)) {
+		spin_unlock(&priv->lock);
+		return IRQ_HANDLED;
+	}
+
+	rtl818x_iowrite16(priv, &priv->map->INT_STATUS, reg);
+
+	if (reg & (RTL818X_INT_TXB_OK | RTL818X_INT_TXB_ERR))
+		rtl8180_handle_tx(dev, 3);
+
+	if (reg & (RTL818X_INT_TXH_OK | RTL818X_INT_TXH_ERR))
+		rtl8180_handle_tx(dev, 2);
+
+	if (reg & (RTL818X_INT_TXN_OK | RTL818X_INT_TXN_ERR))
+		rtl8180_handle_tx(dev, 1);
+
+	if (reg & (RTL818X_INT_TXL_OK | RTL818X_INT_TXL_ERR))
+		rtl8180_handle_tx(dev, 0);
+
+	if (reg & (RTL818X_INT_RX_OK | RTL818X_INT_RX_ERR))
+		rtl8180_handle_rx(dev);
+
+	spin_unlock(&priv->lock);
+
[...2175 lines suppressed...]
+}
+
+void sa2400_rf_init(struct ieee80211_hw *dev)
+{
+	struct rtl8180_priv *priv = dev->priv;
+	u32 anaparam, txconf;
+	u8 firdac;
+	int analogphy = priv->rfparam & RF_PARAM_ANALOGPHY;
+
+	anaparam = priv->anaparam;
+	anaparam &= ~(1 << ANAPARAM_TXDACOFF_SHIFT);
+	anaparam &= ~ANAPARAM_PWR1_MASK;
+	anaparam &= ~ANAPARAM_PWR0_MASK;
+
+	if (analogphy) {
+		anaparam |= SA2400_ANA_ANAPARAM_PWR1_ON << ANAPARAM_PWR1_SHIFT;
+		firdac = 0;
+	} else {
+		anaparam |= (SA2400_DIG_ANAPARAM_PWR1_ON << ANAPARAM_PWR1_SHIFT);
+		anaparam |= (SA2400_ANAPARAM_PWR0_ON << ANAPARAM_PWR0_SHIFT);
+		firdac = 1 << SA2400_REG4_FIRDAC_SHIFT;
+	}
+
+	rtl8180_set_anaparam(priv, anaparam);
+
+	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, 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 */
+
+		rtl818x_iowrite32(priv, &priv->map->TX_CONF, txconf);
+
+		rtl8180_set_anaparam(priv, anaparam);
+	}
+	/* end new code */
+
+	write_sa2400(dev, 4, 0x19341 | firdac); /* RTX MODE */
+
+	/* 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);
+
+	sa2400_write_phy_antenna(dev, 1);
+
+	rtl8180_write_phy(dev, 0x11, 0x80);
+
+	if (rtl818x_ioread8(priv, &priv->map->CONFIG2) &
+	    RTL818X_CONFIG2_ANTENNA_DIV)
+		rtl8180_write_phy(dev, 0x12, 0xc7); /* enable ant diversity */
+	else
+		rtl8180_write_phy(dev, 0x12, 0x47); /* disable ant diversity */
+
+	rtl8180_write_phy(dev, 0x13, 0x90 | priv->csthreshold);
+
+	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
+
 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
+
+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));
 

linux-2.6-wireless-pending.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.6 -r 1.7 linux-2.6-wireless-pending.patch
Index: linux-2.6-wireless-pending.patch
===================================================================
RCS file: linux-2.6-wireless-pending.patch
diff -N linux-2.6-wireless-pending.patch
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ linux-2.6-wireless-pending.patch	6 Dec 2007 02:25:11 -0000	1.7
@@ -0,0 +1,61918 @@
+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;
+ 
+-	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;
+ 
+ 	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;
+ 
+-	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;
+ 
+ 	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>
++
++
++
++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")];
++};
++
++/* The init function returns void, because we are not interested
++ * in failing the b43 init process when rfkill init failed. */
++void b43legacy_rfkill_init(struct b43legacy_wldev *dev);
++void b43legacy_rfkill_exit(struct b43legacy_wldev *dev);
++
++char * b43legacy_rfkill_led_name(struct b43legacy_wldev *dev);
++
++
++#else /* CONFIG_B43LEGACY_RFKILL */
++/* No RFKILL support. */
++
++struct b43legacy_rfkill {
++	/* empty */
++};
++
++static inline void b43legacy_rfkill_alloc(struct b43legacy_wldev *dev)
++{
++}
++static inline void b43legacy_rfkill_free(struct b43legacy_wldev *dev)
++{
++}
++static inline void b43legacy_rfkill_init(struct b43legacy_wldev *dev)
++{
++}
++static inline void b43legacy_rfkill_exit(struct b43legacy_wldev *dev)
++{
++}
++static inline char * b43legacy_rfkill_led_name(struct b43legacy_wldev *dev)
++{
++	return NULL;
++}
++
++#endif /* CONFIG_B43LEGACY_RFKILL */
++
++#endif /* B43legacy_RFKILL_H_ */
+diff -up linux-2.6.23.noarch/drivers/net/wireless/b43legacy/leds.h.orig linux-2.6.23.noarch/drivers/net/wireless/b43legacy/leds.h
+--- linux-2.6.23.noarch/drivers/net/wireless/b43legacy/leds.h.orig	2007-12-05 20:43:11.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/b43legacy/leds.h	2007-12-05 20:43:54.000000000 -0500
+@@ -1,30 +1,33 @@
+ #ifndef B43legacy_LEDS_H_
+ #define B43legacy_LEDS_H_
+ 
++struct b43legacy_wldev;
++
++#ifdef CONFIG_B43LEGACY_LEDS
++
+ #include <linux/types.h>
+-#include <linux/timer.h>
++#include <linux/leds.h>
+ 
+ 
++#define B43legacy_LED_MAX_NAME_LEN	31
++
+ struct b43legacy_led {
+-	u8 behaviour;
+-	bool activelow;
+-	/* Index in the "leds" array in b43legacy_wldev */
+-	u8 index;
+ 	struct b43legacy_wldev *dev;
+-	struct timer_list blink_timer;
+-	unsigned long blink_interval;
++	/* The LED class device */
++	struct led_classdev led_dev;
++	/* The index number of the LED. */
++	u8 index;
++	/* If activelow is true, the LED is ON if the
++	 * bit is switched off. */
++	bool activelow;
++	/* The unique name string for this LED device. */
++	char name[B43legacy_LED_MAX_NAME_LEN + 1];
+ };
+ 
+-/* Delay between state changes when blinking in jiffies */
+-#define B43legacy_LEDBLINK_SLOW		(HZ / 1)
+-#define B43legacy_LEDBLINK_MEDIUM	(HZ / 4)
+-#define B43legacy_LEDBLINK_FAST		(HZ / 8)
+-
+-#define B43legacy_LED_XFER_THRES	(HZ / 100)
+-
+ #define B43legacy_LED_BEHAVIOUR		0x7F
+ #define B43legacy_LED_ACTIVELOW		0x80
+-enum { /* LED behaviour values */
++/* LED behaviour values */
++enum b43legacy_led_behaviour {
+ 	B43legacy_LED_OFF,
+ 	B43legacy_LED_ON,
+ 	B43legacy_LED_ACTIVITY,
+@@ -37,20 +40,24 @@ enum { /* LED behaviour values */
+ 	B43legacy_LED_WEIRD,
+ 	B43legacy_LED_ASSOC,
+ 	B43legacy_LED_INACTIVE,
+-
+-	/* Behaviour values for testing.
+-	 * With these values it is easier to figure out
+-	 * the real behaviour of leds, in case the SPROM
+-	 * is missing information.
+-	 */
+-	B43legacy_LED_TEST_BLINKSLOW,
+-	B43legacy_LED_TEST_BLINKMEDIUM,
+-	B43legacy_LED_TEST_BLINKFAST,
+ };
+ 
+-int b43legacy_leds_init(struct b43legacy_wldev *dev);
++void b43legacy_leds_init(struct b43legacy_wldev *dev);
+ void b43legacy_leds_exit(struct b43legacy_wldev *dev);
+-void b43legacy_leds_update(struct b43legacy_wldev *dev, int activity);
+-void b43legacy_leds_switch_all(struct b43legacy_wldev *dev, int on);
++
++#else /* CONFIG_B43EGACY_LEDS */
++/* LED support disabled */
++
++struct b43legacy_led {
++	/* empty */
++};
++
++static inline void b43legacy_leds_init(struct b43legacy_wldev *dev)
++{
++}
++static inline void b43legacy_leds_exit(struct b43legacy_wldev *dev)
++{
++}
++#endif /* CONFIG_B43LEGACY_LEDS */
+ 
+ #endif /* B43legacy_LEDS_H_ */
+diff -up linux-2.6.23.noarch/drivers/net/wireless/b43legacy/debugfs.c.orig linux-2.6.23.noarch/drivers/net/wireless/b43legacy/debugfs.c
+--- linux-2.6.23.noarch/drivers/net/wireless/b43legacy/debugfs.c.orig	2007-12-05 20:43:11.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/b43legacy/debugfs.c	2007-12-05 20:43:54.000000000 -0500
+@@ -209,7 +209,7 @@ static ssize_t b43legacy_debugfs_read(st
+ 	struct b43legacy_wldev *dev;
+ 	struct b43legacy_debugfs_fops *dfops;
+ 	struct b43legacy_dfs_file *dfile;
+-	ssize_t ret = 0;
++	ssize_t uninitialized_var(ret);
+ 	char *buf;
+ 	const size_t bufsize = 1024 * 128;
+ 	const size_t buforder = get_order(bufsize);
+diff -up linux-2.6.23.noarch/drivers/net/wireless/b43legacy/main.h.orig linux-2.6.23.noarch/drivers/net/wireless/b43legacy/main.h
+--- linux-2.6.23.noarch/drivers/net/wireless/b43legacy/main.h.orig	2007-12-05 20:43:11.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/b43legacy/main.h	2007-12-05 20:43:54.000000000 -0500
+@@ -3,7 +3,7 @@
[...61525 lines suppressed...]
+ #define  SSB_IDLOW_SSBREV_23	0x10000000 /* 2.3 */
++#define  SSB_IDLOW_SSBREV_24	0x40000000 /* ?? Found in BCM4328 */
++#define  SSB_IDLOW_SSBREV_25	0x50000000 /* ?? Not Found yet */
++#define  SSB_IDLOW_SSBREV_26	0x60000000 /* ?? Found in some BCM4311/2 */
++#define  SSB_IDLOW_SSBREV_27	0x70000000 /* ?? Found in some BCM4311/2 */
+ #define SSB_IDHIGH		0x0FFC     /* SB Identification High */
+ #define  SSB_IDHIGH_RCLO	0x0000000F /* Revision Code (low part) */
+ #define  SSB_IDHIGH_CC		0x00008FF0 /* Core Code */
+@@ -162,11 +166,16 @@
+  */
+ #define SSB_SPROMSIZE_WORDS		64
+ #define SSB_SPROMSIZE_BYTES		(SSB_SPROMSIZE_WORDS * sizeof(u16))
++#define SSB_SPROMSIZE_WORDS_R123	64
++#define SSB_SPROMSIZE_WORDS_R4		220
++#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) */
++
+ /* 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
++
+ /* 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-zd1211rw-module-alias.patch:

--- NEW FILE linux-2.6-zd1211rw-module-alias.patch ---
diff -up linux-2.6.23.noarch/drivers/net/wireless/zd1211rw/zd_usb.c.orig linux-2.6.23.noarch/drivers/net/wireless/zd1211rw/zd_usb.c
--- linux-2.6.23.noarch/drivers/net/wireless/zd1211rw/zd_usb.c.orig	2007-12-05 20:59:52.000000000 -0500
+++ linux-2.6.23.noarch/drivers/net/wireless/zd1211rw/zd_usb.c	2007-12-05 21:00:36.000000000 -0500
@@ -92,6 +92,7 @@ MODULE_AUTHOR("Ulrich Kunitz");
 MODULE_AUTHOR("Daniel Drake");
 MODULE_VERSION("1.0");
 MODULE_DEVICE_TABLE(usb, usb_ids);
+MODULE_ALIAS("zd1211rw-mac80211");
 
 #define FW_ZD1211_PREFIX	"zd1211/zd1211_"
 #define FW_ZD1211B_PREFIX	"zd1211/zd1211b_"


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/kernel-2.6.spec,v
retrieving revision 1.3395
retrieving revision 1.3396
diff -u -r1.3395 -r1.3396
--- kernel-2.6.spec	3 Dec 2007 18:12:37 -0000	1.3395
+++ kernel-2.6.spec	6 Dec 2007 02:25:10 -0000	1.3396
@@ -598,13 +598,14 @@
 Patch667: linux-2.6-libata-correct-iordy-handling.patch
 
 Patch680: linux-2.6-wireless.patch
-Patch682: linux-2.6-bcm43xx-pci-neuter.patch
-Patch683: linux-2.6-iwlwifi-cve-2007-5938.patch
+Patch681: linux-2.6-wireless-pending.patch
 Patch690: linux-2.6-at76.patch
 Patch691: linux-2.6-ath5k.patch
-Patch693: linux-2.6-zd1211rw-mac80211.patch
-Patch700: linux-2.6-b43-module-alias.patch
-Patch701: linux-2.6-b43-use-old-fw.patch
+Patch692: linux-2.6-rtl8180.patch
+Patch700: linux-2.6-bcm43xx-pci-neuter.patch
+Patch701: linux-2.6-zd1211rw-module-alias.patch
+Patch702: linux-2.6-b43-module-alias.patch
+Patch703: linux-2.6-ath5k-use-soft-wep.patch
 
 Patch710: linux-2.6-netdev-e1000e-01.patch
 Patch711: linux-2.6-netdev-e1000e-02.patch
@@ -1284,21 +1285,21 @@
 # post-2.6.23 wireless patches from upstream
 ApplyPatch linux-2.6-wireless.patch
 # pre-2.6.25 wireless patches from upstream
-#ApplyPatch linux-2.6-wireless-pending.patch
-
-# fix CVE-2007-5938
-ApplyPatch linux-2.6-iwlwifi-cve-2007-5938.patch
+ApplyPatch linux-2.6-wireless-pending.patch
 
 # Add misc wireless bits from upstream wireless tree
 ApplyPatch linux-2.6-at76.patch
 ApplyPatch linux-2.6-ath5k.patch
-ApplyPatch linux-2.6-zd1211rw-mac80211.patch
+ApplyPatch linux-2.6-rtl8180.patch
+
 # avoid bcm3xx vs bcm43xx-mac80211 PCI ID conflicts
 ApplyPatch linux-2.6-bcm43xx-pci-neuter.patch
+# add module alias for "zd1211rw-mac80211"
+ApplyPatch linux-2.6-zd1211rw-module-alias.patch
 # add module alias for "bcm43xx-mac80211"
 ApplyPatch linux-2.6-b43-module-alias.patch
-# use old-style firmware for b43
-ApplyPatch linux-2.6-b43-use-old-fw.patch
+# Make ath5k use software WEP
+ApplyPatch linux-2.6-ath5k-use-soft-wep.patch
 
 # e1000e goes here
 # latest Intel driver for ich9
@@ -2277,6 +2278,10 @@
 %endif
 
 %changelog
+* Wed Dec 05 2007 John W. Linville <linville at redhat.com>
+- Update wireless bits from current upstream (resync w/ F-8)
+- Drop patch to use "old format" firwmare for b43 (unmaintainable)
+
 * Mon Dec 03 2007 Jarod Wilson <jwilson at redhat.com>
 - Improved FireWire OHCI 1.0 Isochronous Receive support (#344851)
 

linux-2.6-at76.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.1 -r 1.2 linux-2.6-at76.patch
Index: linux-2.6-at76.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-7/linux-2.6-at76.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-at76.patch	27 Sep 2007 15:33:19 -0000	1.1
+++ linux-2.6-at76.patch	6 Dec 2007 02:25:10 -0000	1.2
@@ -1,26 +1,7 @@
-diff -up linux-2.6.22.noarch/MAINTAINERS.orig linux-2.6.22.noarch/MAINTAINERS
---- linux-2.6.22.noarch/MAINTAINERS.orig	2007-09-27 11:19:28.000000000 -0400
-+++ linux-2.6.22.noarch/MAINTAINERS	2007-09-27 11:23:09.000000000 -0400
-@@ -690,6 +690,15 @@ W:	http://www.thekelleys.org.uk/atmel
- W:	http://atmelwlandriver.sourceforge.net/
- S:	Maintained
- 
-+ATMEL USB WIRELESS DRIVER
-+P:	Pavel Roskin
-+M:	proski at gnu.org
-+L:	linux-wireless at vger.kernel.org
-+L:	at76c503a-user at lists.berlios.de
-+L:	at76c503a-develop at lists.berlios.de
-+W:	http://at76c503a.berlios.de/
-+S:	Maintained
-+
- AUDIT SUBSYSTEM
- P:	David Woodhouse
- M:	dwmw2 at infradead.org
-diff -up /dev/null linux-2.6.22.noarch/drivers/net/wireless/at76_usb.h
---- /dev/null	2007-09-27 08:31:24.563724082 -0400
-+++ linux-2.6.22.noarch/drivers/net/wireless/at76_usb.h	2007-09-27 11:23:09.000000000 -0400
-@@ -0,0 +1,662 @@
+diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/at76_usb.h
+--- /dev/null	2007-12-05 20:11:19.574108129 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/at76_usb.h	2007-12-05 20:51:44.000000000 -0500
+@@ -0,0 +1,619 @@
 +/*
 + * Copyright (c) 2002,2003 Oliver Kurth
 + *	     (c) 2003,2004 Joerg Albert <joerg.albert at gmx.de>
@@ -45,11 +26,6 @@
 +#ifndef _AT76_USB_H
 +#define _AT76_USB_H
 +
-+#include <net/ieee80211.h>
-+
-+/* current driver version */
-+#define DRIVER_VERSION	"0.16"
-+
 +/* Board types */
 +enum board_type {
 +	BOARD_503_ISL3861 = 1,
@@ -101,9 +77,9 @@
 +#define CMD_SCAN		0x03
 +#define CMD_JOIN		0x04
 +#define CMD_START_IBSS		0x05
-+#define CMD_RADIO		0x06
++#define CMD_RADIO_ON		0x06
++#define CMD_RADIO_OFF		0x07
 +#define CMD_STARTUP		0x0B
-+#define CMD_GETOPMODE		0x33
 +
 +#define MIB_LOCAL		0x01
 +#define MIB_MAC_ADDR		0x02
@@ -268,7 +244,11 @@
 +	u8 size;
 +	u8 index;
 +	u8 reserved;
-+	u8 data[72];
++	union {
++		u8 byte;
++		__le16 word;
++		u8 addr[ETH_ALEN];
++	} data;
 +} __attribute__((packed));
 +
 +struct mib_local {
@@ -417,8 +397,7 @@
 +	struct list_head list;
 +
 +	u8 bssid[ETH_ALEN];	/* bssid */
-+	u8 ssid[IW_ESSID_MAX_SIZE + 1];	/* ssid, +1 for trailing \0
-+					   to make it printable */
++	u8 ssid[IW_ESSID_MAX_SIZE];	/* essid */
 +	u8 ssid_len;		/* length of ssid above */
 +	u8 channel;
 +	u16 capa;		/* BSS capabilities */
@@ -576,7 +555,7 @@
 +	struct set_mib_buffer mib_buf;	/* global buffer for set_mib calls */
 +
 +	/* beacon counting */
-+	int beacon_period;	/* period of mgmt beacons */
++	int beacon_period;	/* period of mgmt beacons, Kus */
 +	int beacons_received;
 +	unsigned long beacons_last_qual;	/* time we restarted counting
 +						   beacons */
@@ -641,64 +620,11 @@
 +/* the max padding size for tx in bytes (see calc_padding) */
 +#define MAX_PADDING_SIZE	53
 +
-+/* at76_debug bits */
-+#define DBG_PROGRESS		0x00000001	/* authentication/accociation */
-+#define DBG_BSS_TABLE		0x00000002	/* show BSS table after scans */
-+#define DBG_IOCTL		0x00000004	/* ioctl calls / settings */
-+#define DBG_MAC_STATE		0x00000008	/* MAC state transitions */
-+#define DBG_TX_DATA		0x00000010	/* tx header */
-+#define DBG_TX_DATA_CONTENT	0x00000020	/* tx content */
-+#define DBG_TX_MGMT		0x00000040	/* tx management */
-+#define DBG_RX_DATA		0x00000080	/* rx data header */
-+#define DBG_RX_DATA_CONTENT	0x00000100	/* rx data content */
-+#define DBG_RX_MGMT		0x00000200	/* rx mgmt frame headers */
-+#define DBG_RX_BEACON		0x00000400	/* rx beacon */
-+#define DBG_RX_CTRL		0x00000800	/* rx control */
-+#define DBG_RX_MGMT_CONTENT	0x00001000	/* rx mgmt content */
-+#define DBG_RX_FRAGS		0x00002000	/* rx data fragment handling */
-+#define DBG_DEVSTART		0x00004000	/* fw download, device start */
-+#define DBG_URB			0x00008000	/* rx urb status, ... */
-+#define DBG_RX_ATMEL_HDR	0x00010000	/* Atmel-specific Rx headers */
-+#define DBG_PROC_ENTRY		0x00020000	/* procedure entries/exits */
-+#define DBG_PM			0x00040000	/* power management settings */
-+#define DBG_BSS_MATCH		0x00080000	/* BSS match failures */
-+#define DBG_PARAMS		0x00100000	/* show configured parameters */
-+#define DBG_WAIT_COMPLETE	0x00200000	/* command completion */
-+#define DBG_RX_FRAGS_SKB	0x00400000	/* skb header of Rx fragments */
-+#define DBG_BSS_TABLE_RM	0x00800000	/* purging bss table entries */
-+#define DBG_MONITOR_MODE	0x01000000	/* monitor mode */
-+#define DBG_MIB			0x02000000	/* dump all MIBs on startup */
-+#define DBG_MGMT_TIMER		0x04000000	/* dump mgmt_timer ops */
-+#define DBG_WE_EVENTS		0x08000000	/* dump wireless events */
-+#define DBG_FW			0x10000000	/* firmware download */
-+#define DBG_DFU			0x20000000	/* device firmware upgrade */
-+
-+#define DBG_DEFAULTS		0
-+
-+/* Use our own dbg macro */
-+#define at76_dbg(bits, format, arg...) \
-+	do { \
-+		if (at76_debug & (bits)) \
-+		printk(KERN_DEBUG DRIVER_NAME ": " format "\n" , ## arg); \
-+	} while (0)
-+
 +#endif				/* _AT76_USB_H */
-diff -up linux-2.6.22.noarch/drivers/net/wireless/Makefile.orig linux-2.6.22.noarch/drivers/net/wireless/Makefile
---- linux-2.6.22.noarch/drivers/net/wireless/Makefile.orig	2007-09-27 11:19:26.000000000 -0400
-+++ linux-2.6.22.noarch/drivers/net/wireless/Makefile	2007-09-27 11:23:09.000000000 -0400
-@@ -32,6 +32,8 @@ obj-$(CONFIG_ATMEL)             += atmel
- obj-$(CONFIG_PCI_ATMEL)         += atmel_pci.o 
- obj-$(CONFIG_PCMCIA_ATMEL)      += atmel_cs.o
- 
-+obj-$(CONFIG_USB_ATMEL)	        += at76_usb.o
-+
- obj-$(CONFIG_PRISM54)		+= prism54/
- 
- obj-$(CONFIG_HOSTAP)		+= hostap/
-diff -up /dev/null linux-2.6.22.noarch/drivers/net/wireless/at76_usb.c
---- /dev/null	2007-09-27 08:31:24.563724082 -0400
-+++ linux-2.6.22.noarch/drivers/net/wireless/at76_usb.c	2007-09-27 11:23:09.000000000 -0400
-@@ -0,0 +1,5553 @@
+diff -up /dev/null linux-2.6.23.noarch/drivers/net/wireless/at76_usb.c
+--- /dev/null	2007-12-05 20:11:19.574108129 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/at76_usb.c	2007-12-05 20:51:44.000000000 -0500
+@@ -0,0 +1,5556 @@
 +/*
 + * at76c503/at76c505 USB driver
 + *
@@ -737,13 +663,56 @@
 +#include <net/ieee80211_radiotap.h>
 +#include <linux/firmware.h>
 +#include <linux/leds.h>
++#include <net/ieee80211.h>
 +
 +#include "at76_usb.h"
 +
 +/* Version information */
 +#define DRIVER_NAME "at76_usb"
++#define DRIVER_VERSION	"0.17"
 +#define DRIVER_DESC "Atmel at76x USB Wireless LAN Driver"
 +
++/* at76_debug bits */
++#define DBG_PROGRESS		0x00000001	/* authentication/accociation */
++#define DBG_BSS_TABLE		0x00000002	/* show BSS table after scans */
++#define DBG_IOCTL		0x00000004	/* ioctl calls / settings */
++#define DBG_MAC_STATE		0x00000008	/* MAC state transitions */
++#define DBG_TX_DATA		0x00000010	/* tx header */
++#define DBG_TX_DATA_CONTENT	0x00000020	/* tx content */
++#define DBG_TX_MGMT		0x00000040	/* tx management */
++#define DBG_RX_DATA		0x00000080	/* rx data header */
++#define DBG_RX_DATA_CONTENT	0x00000100	/* rx data content */
++#define DBG_RX_MGMT		0x00000200	/* rx mgmt frame headers */
++#define DBG_RX_BEACON		0x00000400	/* rx beacon */
++#define DBG_RX_CTRL		0x00000800	/* rx control */
++#define DBG_RX_MGMT_CONTENT	0x00001000	/* rx mgmt content */
++#define DBG_RX_FRAGS		0x00002000	/* rx data fragment handling */
++#define DBG_DEVSTART		0x00004000	/* fw download, device start */
++#define DBG_URB			0x00008000	/* rx urb status, ... */
++#define DBG_RX_ATMEL_HDR	0x00010000	/* Atmel-specific Rx headers */
++#define DBG_PROC_ENTRY		0x00020000	/* procedure entries/exits */
++#define DBG_PM			0x00040000	/* power management settings */
++#define DBG_BSS_MATCH		0x00080000	/* BSS match failures */
++#define DBG_PARAMS		0x00100000	/* show configured parameters */
++#define DBG_WAIT_COMPLETE	0x00200000	/* command completion */
[...1618 lines suppressed...]
++			   "bulk endpoints missing\n");
 +		return -ENXIO;
 +	}
 +
@@ -5914,15 +5850,15 @@
 +	priv->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
 +	priv->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
 +	if (!priv->rx_urb || !priv->tx_urb) {
-+		printk(KERN_ERR DRIVER_NAME ": cannot allocate URB\n");
++		dev_printk(KERN_ERR, &interface->dev, "cannot allocate URB\n");
 +		return -ENOMEM;
 +	}
 +
 +	buffer_size = sizeof(struct at76_tx_buffer) + MAX_PADDING_SIZE;
 +	priv->bulk_out_buffer = kmalloc(buffer_size, GFP_KERNEL);
 +	if (!priv->bulk_out_buffer) {
-+		printk(KERN_ERR DRIVER_NAME
-+		       ": cannot allocate output buffer\n");
++		dev_printk(KERN_ERR, &interface->dev,
++			   "cannot allocate output buffer\n");
 +		return -ENOMEM;
 +	}
 +
@@ -5951,7 +5887,8 @@
 +	/* MAC address */
 +	ret = at76_get_hw_config(priv);
 +	if (ret < 0) {
-+		err("could not get MAC address");
++		dev_printk(KERN_ERR, &interface->dev,
++			   "cannot get MAC address\n");
 +		goto exit;
 +	}
 +
@@ -5961,14 +5898,13 @@
 +
 +	priv->channel = DEF_CHANNEL;
 +	priv->iw_mode = IW_MODE_INFRA;
-+	memset(priv->essid, 0, IW_ESSID_MAX_SIZE);
 +	priv->rts_threshold = DEF_RTS_THRESHOLD;
 +	priv->frag_threshold = DEF_FRAG_THRESHOLD;
 +	priv->short_retry_limit = DEF_SHORT_RETRY_LIMIT;
 +	priv->txrate = TX_RATE_AUTO;
 +	priv->preamble_type = PREAMBLE_TYPE_LONG;
 +	priv->beacon_period = 100;
-+	priv->beacons_last_qual = jiffies_to_msecs(jiffies);
++	priv->beacons_last_qual = jiffies;
 +	priv->auth_mode = WLAN_AUTH_OPEN;
 +	priv->scan_min_time = DEF_SCAN_MIN_TIME;
 +	priv->scan_max_time = DEF_SCAN_MAX_TIME;
@@ -5990,18 +5926,18 @@
 +	netdev->wireless_handlers = &at76_handler_def;
 +	netdev->set_multicast_list = at76_set_multicast;
 +	netdev->set_mac_address = at76_set_mac_address;
++	dev_alloc_name(netdev, "wlan%d");
 +
 +	ret = register_netdev(priv->netdev);
 +	if (ret) {
-+		err("unable to register netdevice %s (status %d)!",
-+		    priv->netdev->name, ret);
++		dev_printk(KERN_ERR, &interface->dev,
++			   "cannot register netdevice (status %d)!\n", ret);
 +		goto exit;
 +	}
 +	priv->netdev_registered = 1;
 +
-+	printk(KERN_INFO "%s: MAC address %s\n", netdev->name,
-+	       mac2str(priv->mac_addr));
-+	printk(KERN_INFO "%s: firmware version %d.%d.%d-%d\n", netdev->name,
++	printk(KERN_INFO "%s: USB %s, MAC %s, firmware %d.%d.%d-%d\n",
++	       netdev->name, interface->dev.bus_id, mac2str(priv->mac_addr),
 +	       priv->fw_version.major, priv->fw_version.minor,
 +	       priv->fw_version.patch, priv->fw_version.build);
 +	printk(KERN_INFO "%s: regulatory domain 0x%02x: %s\n", netdev->name,
@@ -6097,8 +6033,8 @@
 +	   we get 204 with 2.4.23, Fiberline FL-WL240u (505A+RFMD2958) ??? */
 +
 +	if (op_mode == OPMODE_HW_CONFIG_MODE) {
-+		err("cannot handle a device in HW_CONFIG_MODE (opmode %d)",
-+		    op_mode);
++		dev_printk(KERN_ERR, &interface->dev,
++			   "cannot handle a device in HW_CONFIG_MODE\n");
 +		ret = -EBUSY;
 +		goto error;
 +	}
@@ -6106,10 +6042,13 @@
 +	if (op_mode != OPMODE_NORMAL_NIC_WITH_FLASH
 +	    && op_mode != OPMODE_NORMAL_NIC_WITHOUT_FLASH) {
 +		/* download internal firmware part */
-+		at76_dbg(DBG_DEVSTART, "downloading internal firmware");
++		dev_printk(KERN_DEBUG, &interface->dev,
++			   "downloading internal firmware\n");
 +		ret = at76_load_internal_fw(udev, fwe);
 +		if (ret < 0) {
-+			err("error %d downloading internal firmware", ret);
++			dev_printk(KERN_ERR, &interface->dev,
++				   "error %d downloading internal firmware\n",
++				   ret);
 +			goto error;
 +		}
 +		usb_put_dev(udev);
@@ -6134,7 +6073,8 @@
 +		need_ext_fw = 1;
 +
 +	if (need_ext_fw) {
-+		at76_dbg(DBG_DEVSTART, "downloading external firmware");
++		dev_printk(KERN_DEBUG, &interface->dev,
++			   "downloading external firmware\n");
 +
 +		ret = at76_load_external_fw(udev, fwe);
 +		if (ret)
@@ -6143,20 +6083,8 @@
 +		/* Re-check firmware version */
 +		ret = at76_get_mib(udev, MIB_FW_VERSION, &fwv, sizeof(fwv));
 +		if (ret < 0) {
-+			err("error %d getting firmware version", ret);
-+			goto error;
-+		}
-+
-+		/* Major and minor version must match */
-+		if (fwv.major != fwe->fw_version.major
-+		    || fwv.minor != fwe->fw_version.minor) {
-+			printk(KERN_ERR DRIVER_NAME
-+			       ": wrong firmware version, loaded %d.%d.%d-%d, "
-+			       "read back %d.%d.%d-%d\n",
-+			       fwe->fw_version.major, fwe->fw_version.minor,
-+			       fwe->fw_version.patch, fwe->fw_version.build,
-+			       fwv.major, fwv.minor, fwv.patch, fwv.build);
-+			ret = -EBUSY;
++			dev_printk(KERN_ERR, &interface->dev,
++				   "error %d getting firmware version\n", ret);
 +			goto error;
 +		}
 +	}
@@ -6197,7 +6125,7 @@
 +
 +	printk(KERN_INFO "%s: disconnecting\n", priv->netdev->name);
 +	at76_delete_device(priv);
-+	printk(KERN_INFO DRIVER_NAME ": disconnected\n");
++	dev_printk(KERN_INFO, &interface->dev, "disconnected\n");
 +}
 +
 +/* Structure for registering this driver with the USB subsystem */
@@ -6219,7 +6147,8 @@
 +	/* register this driver with the USB subsystem */
 +	result = usb_register(&at76_driver);
 +	if (result < 0)
-+		err("usb_register failed (status %d)", result);
++		printk(KERN_ERR DRIVER_NAME
++		       ": usb_register failed (status %d)\n", result);
 +
 +	led_trigger_register_simple("at76_usb-tx", &ledtrig_tx);
 +	return result;
@@ -6252,9 +6181,9 @@
 +MODULE_AUTHOR("Pavel Roskin <proski at gnu.org>");
 +MODULE_DESCRIPTION(DRIVER_DESC);
 +MODULE_LICENSE("GPL");
-diff -up linux-2.6.22.noarch/drivers/net/wireless/Kconfig.orig linux-2.6.22.noarch/drivers/net/wireless/Kconfig
---- linux-2.6.22.noarch/drivers/net/wireless/Kconfig.orig	2007-09-27 11:19:26.000000000 -0400
-+++ linux-2.6.22.noarch/drivers/net/wireless/Kconfig	2007-09-27 11:23:09.000000000 -0400
+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:45:04.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig	2007-12-05 20:51:44.000000000 -0500
 @@ -381,6 +381,14 @@ config PCI_HERMES
  	  common.  Some of the built-in wireless adaptors in laptops are of
  	  this variety.
@@ -6270,3 +6199,34 @@
  config PCMCIA_HERMES
  	tristate "Hermes PCMCIA card support"
  	depends on PCMCIA && HERMES
+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:45:04.000000000 -0500
++++ linux-2.6.23.noarch/drivers/net/wireless/Makefile	2007-12-05 20:51:44.000000000 -0500
+@@ -32,6 +32,8 @@ obj-$(CONFIG_ATMEL)             += atmel
+ obj-$(CONFIG_PCI_ATMEL)         += atmel_pci.o 
+ obj-$(CONFIG_PCMCIA_ATMEL)      += atmel_cs.o
+ 
++obj-$(CONFIG_USB_ATMEL)	        += at76_usb.o
++
+ obj-$(CONFIG_PRISM54)		+= prism54/
+ 
+ obj-$(CONFIG_HOSTAP)		+= hostap/
+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:45:04.000000000 -0500
++++ linux-2.6.23.noarch/MAINTAINERS	2007-12-05 20:51:44.000000000 -0500
+@@ -685,6 +685,15 @@ W:	http://www.thekelleys.org.uk/atmel
+ W:	http://atmelwlandriver.sourceforge.net/
+ S:	Maintained
+ 
++ATMEL USB WIRELESS DRIVER
++P:	Pavel Roskin
++M:	proski at gnu.org
++L:	linux-wireless at vger.kernel.org
++L:	at76c503a-user at lists.berlios.de
++L:	at76c503a-develop at lists.berlios.de
++W:	http://at76c503a.berlios.de/
++S:	Maintained
++
+ AUDIT SUBSYSTEM
+ P:	David Woodhouse
+ M:	dwmw2 at infradead.org

linux-2.6-ath5k.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.6 -r 1.7 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.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- linux-2.6-ath5k.patch	22 Nov 2007 01:14:04 -0000	1.6
+++ linux-2.6-ath5k.patch	6 Dec 2007 02:25:10 -0000	1.7
@@ -1,49 +1,13 @@
-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-11-15 12:47:29.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Kconfig	2007-11-15 13:14:13.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.
-+
-+	  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 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-11-15 12:47:29.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/Makefile	2007-11-15 13:13:38.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 /dev/null linux-2.6.23.noarch/drivers/net/wireless/ath5k/initvals.c
---- /dev/null	2007-11-12 23:12:46.917997680 -0500
-+++ linux-2.6.23.noarch/drivers/net/wireless/ath5k/initvals.c	2007-11-15 13:13:38.000000000 -0500
-@@ -0,0 +1,1332 @@
-+/*
-+ * Initial register settings functions
-+ *
-+ * Copyright (c) 2004, 2005, 2006, 2007 Reyk Floeter <reyk at openbsd.org>
-+ * Copyright (c) 2006, 2007 Nick Kossifidis <mickflemm at gmail.com>
+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>
 + * Copyright (c) 2007 Jiri Slaby <jirislaby at gmail.com>
 + *
 + * Permission to use, copy, modify, and distribute this software for any
@@ -60,1439 +24,103 @@
 + *
 + */
 +
-+#include "ath5k.h"
++/*
++ * HW related functions for Atheros Wireless LAN devices.
++ */
++
++#include <linux/pci.h>
++#include <linux/delay.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 *);
 +
 +/*
-+ * MAC/PHY REGISTERS
++ * Enable to overwrite the country code (use "00" for debug)
 + */
++#if 0
++#define COUNTRYCODE "00"
++#endif
 +
++/*******************\
++  General Functions
++\*******************/
 +
 +/*
-+ * Mode-independent initial register writes
++ * Functions used internaly
 + */
 +
-+struct ath5k_ini {
-+	u16	ini_register;
-+	u32	ini_value;
++static inline unsigned int ath5k_hw_htoclock(unsigned int usec, bool turbo)
++{
++	return turbo == true ? (usec * 80) : (usec * 40);
++}
 +
-+	enum {
-+		AR5K_INI_WRITE = 0,	/* Default */
-+		AR5K_INI_READ = 1,	/* Cleared on read */
-+	} ini_mode;
-+};
++static inline unsigned int ath5k_hw_clocktoh(unsigned int clock, bool turbo)
++{
++	return turbo == true ? (clock / 80) : (clock / 40);
++}
 +
 +/*
-+ * Mode specific initial register values
++ * Check if a register write has been completed
 + */
++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_mode {
-+	u16	mode_register;
-+	u32	mode_value[5];
-+};
++	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);
++	}
 +
-+/* Initial register settings for AR5210 */
-+static const struct ath5k_ini ar5210_ini[] = {
-+	/* PCU and MAC registers */
-+	{ AR5K_NOQCU_TXDP0,	0 },
-+	{ AR5K_NOQCU_TXDP1,	0 },
-+	{ AR5K_RXDP,		0 },
-+	{ AR5K_CR,		0 },
-+	{ AR5K_ISR,		0, AR5K_INI_READ },
-+	{ AR5K_IMR,		0 },
-+	{ AR5K_IER,		AR5K_IER_DISABLE },
-+	{ AR5K_BSR,		0, AR5K_INI_READ },
-+	{ AR5K_TXCFG,		AR5K_DMASIZE_128B },
-+	{ AR5K_RXCFG,		AR5K_DMASIZE_128B },
-+	{ AR5K_CFG,		AR5K_INIT_CFG },
-+	{ AR5K_TOPS,		AR5K_INIT_TOPS },
-+	{ AR5K_RXNOFRM,		AR5K_INIT_RXNOFRM },
-+	{ AR5K_RPGTO,		AR5K_INIT_RPGTO },
-+	{ AR5K_TXNOFRM,		AR5K_INIT_TXNOFRM },
-+	{ AR5K_SFR,		0 },
-+	{ AR5K_MIBC,		0 },
-+	{ AR5K_MISC,		0 },
-+	{ AR5K_RX_FILTER_5210,	0 },
-+	{ AR5K_MCAST_FILTER0_5210, 0 },
-+	{ AR5K_MCAST_FILTER1_5210, 0 },
-+	{ AR5K_TX_MASK0,	0 },
[...12803 lines suppressed...]
++ * THE POSSIBILITY OF SUCH DAMAGES.
++ */
++
++#ifndef _ATH5K_DEBUG_H
++#define _ATH5K_DEBUG_H
++
++/* set this to 1 for debugging output */
++#ifndef ATH5K_DEBUG
++#define ATH5K_DEBUG	0
++#endif
++
++struct ath5k_softc;
++struct ath5k_hw;
++struct ieee80211_hw_mode;
++struct sk_buff;
++struct ath5k_buf;
++
++struct ath5k_dbg_info {
++	unsigned int		level;		/* debug level */
++	/* debugfs entries */
++	struct dentry		*debugfs_phydir;
++	struct dentry		*debugfs_debug;
++};
++
++/**
++ * enum ath5k_debug_level - ath5k debug level
++ *
++ * @ATH5K_DEBUG_RESET: reset processing
++ * @ATH5K_DEBUG_INTR: interrupt handling
++ * @ATH5K_DEBUG_MODE: mode init/setup
++ * @ATH5K_DEBUG_XMIT: basic xmit operation
++ * @ATH5K_DEBUG_BEACON: beacon handling
++ * @ATH5K_DEBUG_BEACON_PROC: beacon ISR proc
++ * @ATH5K_DEBUG_CALIBRATE: periodic calibration
++ * @ATH5K_DEBUG_TXPOWER: transmit power setting
++ * @ATH5K_DEBUG_LED: led management
++ * @ATH5K_DEBUG_DUMP_RX: print received skb content
++ * @ATH5K_DEBUG_DUMP_TX: print transmit skb content
++ * @ATH5K_DEBUG_DUMPMODES: dump modes
++ * @ATH5K_DEBUG_TRACE: trace function calls
++ * @ATH5K_DEBUG_FATAL: fatal errors
++ * @ATH5K_DEBUG_ANY: show at any debug level
++ *
++ * The debug level is used to control the amount and type of debugging output
++ * we want to see. The debug level is given in calls to ATH5K_DBG to specify
++ * where the message should appear, and the user can control the debugging
++ * messages he wants to see, either by the module parameter 'debug' on module
++ * load, or dynamically by using debugfs 'ath5k/phyX/debug'. these levels can
++ * be combined together by bitwise OR.
++ */
++enum ath5k_debug_level {
++	ATH5K_DEBUG_RESET	= 0x00000001,
++	ATH5K_DEBUG_INTR	= 0x00000002,
++	ATH5K_DEBUG_MODE	= 0x00000004,
++	ATH5K_DEBUG_XMIT	= 0x00000008,
++	ATH5K_DEBUG_BEACON	= 0x00000010,
++	ATH5K_DEBUG_BEACON_PROC	= 0x00000020,
++	ATH5K_DEBUG_CALIBRATE	= 0x00000100,
++	ATH5K_DEBUG_TXPOWER	= 0x00000200,
++	ATH5K_DEBUG_LED		= 0x00000400,
++	ATH5K_DEBUG_DUMP_RX	= 0x00001000,
++	ATH5K_DEBUG_DUMP_TX	= 0x00002000,
++	ATH5K_DEBUG_DUMPMODES	= 0x00004000,
++	ATH5K_DEBUG_TRACE	= 0x00010000,
++	ATH5K_DEBUG_FATAL	= 0x80000000,
++	ATH5K_DEBUG_ANY		= 0xffffffff
++};
++
++#if ATH5K_DEBUG
++
++#define ATH5K_TRACE(_sc) do { \
++	if (unlikely((_sc)->debug.level & ATH5K_DEBUG_TRACE)) \
++		printk(KERN_DEBUG "ath5k trace %s:%d\n", __func__, __LINE__); \
++	} while (0)
++
++#define ATH5K_DBG(_sc, _m, _fmt, ...) do { \
++	if (unlikely((_sc)->debug.level & (_m) && net_ratelimit())) \
++		ATH5K_PRINTK(_sc, KERN_DEBUG, "(%s:%d): " _fmt, \
++			__func__, __LINE__, ##__VA_ARGS__); \
++	} while (0)
++
++#define ATH5K_DBG_UNLIMIT(_sc, _m, _fmt, ...) do { \
++	if (unlikely((_sc)->debug.level & (_m))) \
++		ATH5K_PRINTK(_sc, KERN_DEBUG, "(%s:%d): " _fmt, \
++			__func__, __LINE__, ##__VA_ARGS__); \
++	} while (0)
++
++void
++ath5k_debug_init(void);
++
++void
++ath5k_debug_init_device(struct ath5k_softc *sc);
++
++void
++ath5k_debug_finish(void);
++
++void
++ath5k_debug_finish_device(struct ath5k_softc *sc);
++
++void
++ath5k_debug_printrxbuffs(struct ath5k_softc *sc, struct ath5k_hw *ah);
++
++void
++ath5k_debug_dump_modes(struct ath5k_softc *sc,
++			struct ieee80211_hw_mode *modes);
++
++void
++ath5k_debug_dump_skb(struct ath5k_softc *sc,
++			struct sk_buff *skb, const char *prefix, int tx);
++
++void
++ath5k_debug_printtxbuf(struct ath5k_softc *sc,
++			struct ath5k_buf *bf, int done);
++
++#else /* no debugging */
++
++#define ATH5K_TRACE(_sc) /* empty */
++
++static inline void __attribute__ ((format (printf, 3, 4)))
++ATH5K_DBG(struct ath5k_softc *sc, unsigned int m, const char *fmt, ...) {}
++
++static inline void __attribute__ ((format (printf, 3, 4)))
++ATH5K_DBG_UNLIMIT(struct ath5k_softc *sc, unsigned int m, const char *fmt, ...)
++{}
++
++static inline void
++ath5k_debug_init(void) {}
++
++static inline void
++ath5k_debug_init_device(struct ath5k_softc *sc) {}
++
++static inline void
++ath5k_debug_finish(void) {}
++
++static inline void
++ath5k_debug_finish_device(struct ath5k_softc *sc) {}
++
++static inline void
++ath5k_debug_printrxbuffs(struct ath5k_softc *sc, struct ath5k_hw *ah) {}
++
++static inline void
++ath5k_debug_dump_modes(struct ath5k_softc *sc,
++			struct ieee80211_hw_mode *modes) {}
++
++static inline void
++ath5k_debug_dump_skb(struct ath5k_softc *sc,
++			struct sk_buff *skb, const char *prefix, int tx) {}
++
++static inline void
++ath5k_debug_printtxbuf(struct ath5k_softc *sc,
++			struct ath5k_buf *bf, int done) {}
++
++#endif /* if ATH5K_DEBUG */
++
++#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.
++
++	  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 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
++
++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-11-15 12:47:29.000000000 -0500
-+++ linux-2.6.23.noarch/MAINTAINERS	2007-11-15 13:13:38.000000000 -0500
+--- 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

linux-2.6-wireless.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.15 -r 1.16 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.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- linux-2.6-wireless.patch	22 Nov 2007 01:14:04 -0000	1.15
+++ linux-2.6-wireless.patch	6 Dec 2007 02:25:11 -0000	1.16
@@ -1,41253 +1,43712 @@
-diff -up linux-2.6.23.noarch/drivers/Kconfig.orig linux-2.6.23.noarch/drivers/Kconfig
---- linux-2.6.23.noarch/drivers/Kconfig.orig	2007-11-15 20:56:59.000000000 -0500
-+++ linux-2.6.23.noarch/drivers/Kconfig	2007-11-15 20:57:07.000000000 -0500
-@@ -58,6 +58,8 @@ source "drivers/power/Kconfig"
- 
- source "drivers/hwmon/Kconfig"
- 
-+source "drivers/ssb/Kconfig"
-+
- source "drivers/mfd/Kconfig"
+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;
+ }
  
- source "drivers/media/Kconfig"
-diff -up /dev/null linux-2.6.23.noarch/drivers/ssb/ssb_private.h
---- /dev/null	2007-11-12 23:12:46.917997680 -0500
-+++ linux-2.6.23.noarch/drivers/ssb/ssb_private.h	2007-11-15 20:57:07.000000000 -0500
-@@ -0,0 +1,136 @@
-+#ifndef LINUX_SSB_PRIVATE_H_
-+#define LINUX_SSB_PRIVATE_H_
-+
-+#include <linux/ssb/ssb.h>
-+#include <linux/types.h>
-+
-+
-+#define PFX	"ssb: "
++/* 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);
 +
-+#ifdef CONFIG_SSB_SILENT
-+# define ssb_printk(fmt, x...)	do { /* nothing */ } while (0)
-+#else
-+# define ssb_printk		printk
-+#endif /* CONFIG_SSB_SILENT */
++	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;
++}
 +
-+/* dprintk: Debugging printk; vanishes for non-debug compilation */
-+#ifdef CONFIG_SSB_DEBUG
-+# define ssb_dprintk(fmt, x...)	ssb_printk(fmt , ##x)
-+#else
-+# define ssb_dprintk(fmt, x...)	do { /* nothing */ } while (0)
-+#endif
+ /* 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);
+ }
+ 
+ /* 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]);
+ 
+ 	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]);
+ 
+ 		  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);
+ 
+ 	} 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
 +
-+#ifdef CONFIG_SSB_DEBUG
-+# define SSB_WARN_ON(x)		WARN_ON(x)
-+# define SSB_BUG_ON(x)		BUG_ON(x)
-+#else
-+static inline int __ssb_do_nothing(int x) { return x; }
-+# define SSB_WARN_ON(x)		__ssb_do_nothing(unlikely(!!(x)))
-+# define SSB_BUG_ON(x)		__ssb_do_nothing(unlikely(!!(x)))
-+#endif
++/*
++ * Defines for PCI based mac80211 Prism54 driver
++ *
++ * Copyright (c) 2006, Michael Wu <flamingice at sourmilk.net>
++ *
++ * Based on the islsm (softmac prism54) driver, which is:
++ * Copyright 2004-2006 Jean-Baptiste Note <jbnote at gmail.com>, et al.
++ *
++ * 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.
++ */
 +
++/* Device Interrupt register bits */
++#define ISL38XX_DEV_INT_RESET                   0x0001
++#define ISL38XX_DEV_INT_UPDATE                  0x0002
++#define ISL38XX_DEV_INT_WAKEUP                  0x0008
++#define ISL38XX_DEV_INT_SLEEP                   0x0010
++#define ISL38XX_DEV_INT_ABORT                   0x0020
++/* these two only used in USB */
++#define ISL38XX_DEV_INT_DATA                    0x0040
++#define ISL38XX_DEV_INT_MGMT                    0x0080
 +
-+/* pci.c */
-+#ifdef CONFIG_SSB_PCIHOST
-+extern int ssb_pci_switch_core(struct ssb_bus *bus,
-+			       struct ssb_device *dev);
-+extern int ssb_pci_switch_coreidx(struct ssb_bus *bus,
-+				  u8 coreidx);
-+extern int ssb_pci_xtal(struct ssb_bus *bus, u32 what,
-+			int turn_on);
-+extern int ssb_pci_get_invariants(struct ssb_bus *bus,
-+				  struct ssb_init_invariants *iv);
-+extern void ssb_pci_exit(struct ssb_bus *bus);
-+extern int ssb_pci_init(struct ssb_bus *bus);
-+extern const struct ssb_bus_ops ssb_pci_ops;
++#define ISL38XX_DEV_INT_PCIUART_CTS             0x4000
++#define ISL38XX_DEV_INT_PCIUART_DR              0x8000
 +
-+#else /* CONFIG_SSB_PCIHOST */
[...225283 lines suppressed...]
-+S:	Maintained
-+
- ADT746X FAN DRIVER
- P:	Colin Leroy
- M:	colin at colino.net
-@@ -787,11 +795,29 @@ L:	linux-hams at vger.kernel.org
- W:	http://www.baycom.org/~tom/ham/ham.html
- S:	Maintained
- 
-+B43 WIRELESS DRIVER
-+P:	Michael Buesch
-+M:	mb at bu3sch.de
-+P:	Stefano Brivio
-+M:	stefano.brivio at polimi.it
-+L:	linux-wireless at vger.kernel.org
-+W:	http://linuxwireless.org/en/users/Drivers/b43
-+S:	Maintained
-+
-+B43LEGACY WIRELESS DRIVER
-+P:	Larry Finger
-+M:	Larry.Finger at lwfinger.net
-+P:	Stefano Brivio
-+M:	stefano.brivio at polimi.it
-+L:	linux-wireless at vger.kernel.org
-+W:	http://linuxwireless.org/en/users/Drivers/b43
-+S:	Maintained
-+
- BCM43XX WIRELESS DRIVER (SOFTMAC BASED VERSION)
- P:	Larry Finger
- M:	Larry.Finger at lwfinger.net
- P:	Stefano Brivio
--M:	st3 at riseup.net
-+M:	stefano.brivio at polimi.it
- L:	linux-wireless at vger.kernel.org
- W:	http://bcm43xx.berlios.de/
- S:	Maintained
-@@ -2058,6 +2084,15 @@ L:	http://lists.sourceforge.net/mailman/
- W:	http://ipw2200.sourceforge.net
- S:	Supported
- 
-+INTEL WIRELESS WIFI LINK (iwlwifi)
-+P:	Zhu Yi
-+M:	yi.zhu at intel.com
-+L:	linux-wireless at vger.kernel.org
-+L:	ipw3945-devel at lists.sourceforge.net
-+W:	http://intellinuxwireless.org
-+T:	git git://intellinuxwireless.org/repos/iwlwifi
-+S:	Supported
-+
- IOC3 ETHERNET DRIVER
- P:	Ralf Baechle
- M:	ralf at linux-mips.org
-@@ -2419,13 +2454,15 @@ W:	http://www.tazenda.demon.co.uk/phil/l
- S:	Maintained
- 
- MAC80211
--P:	Jiri Benc
--M:	jbenc at suse.cz
- P:	Michael Wu
- M:	flamingice at sourmilk.net
-+P:	Johannes Berg
-+M:	johannes at sipsolutions.net
-+P:	Jiri Benc
-+M:	jbenc at suse.cz
- L:	linux-wireless at vger.kernel.org
- W:	http://linuxwireless.org/
--T:	git kernel.org:/pub/scm/linux/kernel/git/jbenc/mac80211.git
-+T:	git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git
- S:	Maintained
- 
- MACVLAN DRIVER
-@@ -3019,6 +3056,14 @@ L:	kpreempt-tech at lists.sourceforge.net
- W:	ftp://ftp.kernel.org/pub/linux/kernel/people/rml/preempt-kernel
- S:	Supported
- 
-+P54 WIRELESS DRIVER
-+P:	Michael Wu
-+M:	flamingice at sourmilk.net
-+L:	linux-wireless at vger.kernel.org
-+W:	http://prism54.org
-+T:	git kernel.org:/pub/scm/linux/kernel/git/mwu/mac80211-drivers.git
-+S:	Maintained
-+
- PRISM54 WIRELESS DRIVER
- P:	Luis R. Rodriguez
- M:	mcgrof at gmail.com
-@@ -3106,6 +3151,14 @@ M:	corey at world.std.com
- L:	linux-wireless at vger.kernel.org
- S:	Maintained
- 
-+RALINK RT2X00 WLAN DRIVER
-+P:	rt2x00 project
-+L:	linux-wireless at vger.kernel.org
-+L:	rt2400-devel at lists.sourceforge.net
-+W:	http://rt2x00.serialmonkey.com/
-+S:	Maintained
-+F:	drivers/net/wireless/rt2x00/
-+
- RANDOM NUMBER DRIVER
- P:	Matt Mackall
- M:	mpm at selenic.com
-@@ -3390,15 +3443,10 @@ L:	lm-sensors at lm-sensors.org
- S:	Maintained
- 
- SOFTMAC LAYER (IEEE 802.11)
--P:	Johannes Berg
--M:	johannes at sipsolutions.net
--P:	Joe Jezak
--M:	josejx at gentoo.org
- P:	Daniel Drake
- M:	dsd at gentoo.org
--W:	http://softmac.sipsolutions.net/
- L:	linux-wireless at vger.kernel.org
--S:	Maintained
-+S:	Obsolete
- 
- SOFTWARE RAID (Multiple Disks) SUPPORT
- P:	Ingo Molnar
-@@ -3430,6 +3478,12 @@ M:	tsbogend at alpha.franken.de
- L:	netdev at vger.kernel.org
- S:	Maintained
- 
-+SONICS SILICON BACKPLANE DRIVER (SSB)
-+P:	Michael Buesch
-+M:	mb at bu3sch.de
-+L:	netdev at vger.kernel.org
-+S:	Maintained
-+
- SONY VAIO CONTROL DEVICE DRIVER
- P:	Mattia Dongili
- M:	malattia at linux.it
-diff -up linux-2.6.23.noarch/CREDITS.orig linux-2.6.23.noarch/CREDITS
---- linux-2.6.23.noarch/CREDITS.orig	2007-11-15 20:57:00.000000000 -0500
-+++ linux-2.6.23.noarch/CREDITS	2007-11-15 20:57:07.000000000 -0500
-@@ -665,6 +665,11 @@ D: Minor updates to SCSI types, added /p
- S: (ask for current address)
- S: USA
- 
-+N: Robin Cornelius
-+E: robincornelius at users.sourceforge.net
-+D: Ralink rt2x00 WLAN driver
-+S: Cornwall, U.K.
-+
- 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
- 
-+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
- 
-+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
- 
-+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
- 
-+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
-+
- N: Lars Wirzenius
- E: liw at iki.fi
- D: Linux System Administrator's Guide, author, former maintainer


--- linux-2.6-b43-use-old-fw.patch DELETED ---


--- linux-2.6-iwlwifi-cve-2007-5938.patch DELETED ---


--- linux-2.6-zd1211rw-mac80211.patch DELETED ---




More information about the fedora-extras-commits mailing list