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
- Previous message (by thread): rpms/kernel/F-7/configs config-generic,1.343,1.344
- Next message (by thread): rpms/drupal/devel .cvsignore, 1.4, 1.5 drupal-README.fedora, 1.2, 1.3 drupal.spec, 1.5, 1.6 sources, 1.4, 1.5
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
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 ---
- Previous message (by thread): rpms/kernel/F-7/configs config-generic,1.343,1.344
- Next message (by thread): rpms/drupal/devel .cvsignore, 1.4, 1.5 drupal-README.fedora, 1.2, 1.3 drupal.spec, 1.5, 1.6 sources, 1.4, 1.5
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list