diff options
author | Luis R. Rodriguez <mcgrof@pogo.(none)> | 2007-11-16 18:47:42 -0500 |
---|---|---|
committer | Luis R. Rodriguez <mcgrof@pogo.(none)> | 2007-11-16 18:47:42 -0500 |
commit | 0f49a69d1d950db60df4fbb186685577a408725a (patch) | |
tree | c96b0c94022a82c8d191efc7e68481e91d7aad6b | |
parent | 22584118445f7bf1ba54049fbb8a1fe7c1f2315b (diff) | |
download | compat-wireless-2.6-old-0f49a69d1d950db60df4fbb186685577a408725a.tar.gz |
Adds these modules:
adm8211
iwl4965
p54pci
p54usb
rt2400pci
rt2500pci
rt61pci
rt2500usb
rt73usb
rtl8180
rtl8187
b43
b43legacy
Tested successfully these:
p54pci (on FullMAC card)
rt2500pci
rtl8180
b43
As with athload we add a b43load script lets you:
b43load bcm43xx
or
b43load b43
libertas was tested but I have 31.02 on bcdDevice and the new
device fails with:
usb8xxx: URB in failure status: -71
usb 4-1: reset high speed USB device using ehci_hcd and address 3
usb 4-1: reset high speed USB device using ehci_hcd and address 3
usb 4-1: reset high speed USB device using ehci_hcd and address 3
usb 4-1: reset high speed USB device using ehci_hcd and address 3
usb 4-1: reset high speed USB device using ehci_hcd and address 3
usb 4-1: reset high speed USB device using ehci_hcd and address 3
usb 4-1: reset high speed USB device using ehci_hcd and address 3
usb 4-1: reset high speed USB device using ehci_hcd and address 3
usb 4-1: reset high speed USB device using ehci_hcd and address 3
usb 4-1: reset high speed USB device using ehci_hcd and address 3
usb 4-1: reset high speed USB device using ehci_hcd and address 3
usb8xxx: probe of 4-1:1.0 failed with error -12
usbcore: registered new interface driver usb8xxx
Adds some more backport code.
Signed-off-by: Luis R. Rodriguez <mcgrof@winlab.rutgers.edu>
-rw-r--r-- | Makefile | 23 | ||||
-rw-r--r-- | compat/compat.c | 26 | ||||
-rw-r--r-- | compat/compat.diff | 389 | ||||
-rw-r--r-- | compat/compat.h | 36 | ||||
-rw-r--r-- | config.mk | 84 | ||||
-rwxr-xr-x | scripts/admin-update.sh | 38 | ||||
-rwxr-xr-x | scripts/athenable | 83 | ||||
-rwxr-xr-x | scripts/athload | 12 | ||||
-rwxr-xr-x | scripts/b43enable | 50 | ||||
-rwxr-xr-x | scripts/b43load | 62 | ||||
-rwxr-xr-x | scripts/load.sh | 11 | ||||
-rwxr-xr-x | scripts/modlib.sh | 88 | ||||
-rwxr-xr-x | scripts/unload.sh | 15 |
13 files changed, 801 insertions, 116 deletions
@@ -16,10 +16,9 @@ ifneq ($(KERNELRELEASE),) NOSTDINC_FLAGS := -I$(PWD)/include/ $(CFLAGS) obj-y := net/wireless/ net/mac80211/ \ - drivers/net/wireless/ath5k/ \ - drivers/net/wireless/iwlwifi/ \ - drivers/net/wireless/zd1211rw-mac80211/ \ - drivers/net/wireless/b43/ drivers/ssb/ \ + drivers/ssb/ \ + drivers/misc/ \ + drivers/net/wireless/ else export PWD := $(shell pwd) @@ -48,7 +47,7 @@ install: echo ;\ echo -n "Note: madwifi detected, we're going to disable it. " ;\ echo "If you would like to enable it later you can run:" ;\ - echo -e "\tsudo ./scripts/athenable madwifi" ;\ + echo " sudo ./scripts/athenable madwifi" ;\ echo ;\ echo Running scripts/athenable ath5k...;\ ./scripts/athenable ath5k ;\ @@ -68,11 +67,20 @@ install: @# This needs testing before we add it @#modprobe -l iwl4965 @modprobe -l zd1211rw-mac80211 + @# All the scripts we can use + @mkdir -p /usr/lib/compat-wireless/ + @install scripts/modlib.sh /usr/lib/compat-wireless/ @install scripts/madwifi-unload /usr/sbin/ @# This is to allow switching between drivers without blacklisting @install scripts/athenable /usr/sbin/ + @install scripts/b43enable /usr/sbin/ @install scripts/athload /usr/sbin/ + @install scripts/b43load /usr/sbin/ @echo + @echo Now run: make load + @echo + @echo " sudo make load" + @echo uninstall: @# New location, matches upstream @@ -81,7 +89,8 @@ uninstall: @rm -rf $(KLIB)/$(KMODDIR)/drivers/ssb/ @rm -rf $(KLIB)/$(KMODDIR)/drivers/net/wireless/ @depmod -ae - @./scripts/athenable madwifi + @/usr/sbin/athenable madwifi + @/usr/sbin/b43enable bcm43xx @echo @echo "Your old wireless subsystem modules were left intact:" @echo @@ -92,12 +101,14 @@ uninstall: @modprobe -l ath5k @modprobe -l ssb @modprobe -l b43 + @modprobe -l b43legacy @modprobe -l iwl3945 @modprobe -l iwl4965 @modprobe -l ipw3945 @modprobe -l ath_pci @modprobe -l ath_hal @modprobe -l zd1211rw-mac80211 + @modprobe -l bcm43xx @echo unload: diff --git a/compat/compat.c b/compat/compat.c index 4925b00..6d8be72 100644 --- a/compat/compat.c +++ b/compat/compat.c @@ -16,6 +16,7 @@ #include <linux/rtnetlink.h> #include <linux/audit.h> #include <linux/workqueue.h> +#include <linux/pci.h> #include <net/arp.h> #include <net/compat.h> @@ -378,5 +379,30 @@ void __dev_set_rx_mode(struct net_device *dev) dev->set_multicast_list(dev); } +#ifdef PCI_DISABLE_MWI +int pci_try_set_mwi(struct pci_dev *dev) +{ + return 0; +} +EXPORT_SYMBOL(pci_try_set_mwi); +#else +/** + * pci_try_set_mwi - enables memory-write-invalidate PCI transaction + * @dev: the PCI device for which MWI is enabled + * + * Enables the Memory-Write-Invalidate transaction in %PCI_COMMAND. + * Callers are not required to check the return value. + * + * RETURNS: An appropriate -ERRNO error value on error, or zero for success. + */ +int pci_try_set_mwi(struct pci_dev *dev) +{ + int rc = pci_set_mwi(dev); + return rc; +} +EXPORT_SYMBOL(pci_try_set_mwi); +#endif + + #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) */ diff --git a/compat/compat.diff b/compat/compat.diff index 0cff82f..0b93241 100644 --- a/compat/compat.diff +++ b/compat/compat.diff @@ -179,3 +179,392 @@ #include <net/cfg80211.h> #include "ieee80211_i.h" #include "cfg.h" +--- a/drivers/net/wireless/adm8211.h 2007-11-15 19:12:07.000000000 -0500 ++++ b/drivers/net/wireless/adm8211.h 2007-11-15 20:01:20.000000000 -0500 +@@ -416,8 +416,13 @@ + #define TDES1_CONTROL_RBS1 (0x00000fff) + + /* SRAM offsets */ ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++#define ADM8211_SRAM(x) (priv->revid < ADM8211_REV_BA ? \ ++ ADM8211_SRAM_A_ ## x : ADM8211_SRAM_B_ ## x) ++#else + #define ADM8211_SRAM(x) (priv->pdev->revision < ADM8211_REV_BA ? \ + ADM8211_SRAM_A_ ## x : ADM8211_SRAM_B_ ## x) ++#endif + + #define ADM8211_SRAM_INDIV_KEY 0x0000 + #define ADM8211_SRAM_A_SHARE_KEY 0x0160 +@@ -622,6 +627,9 @@ + u8 lnags_threshold; + struct adm8211_eeprom *eeprom; + size_t eeprom_len; ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ u8 revid; ++#endif + + u32 nar; + +--- a/drivers/net/wireless/adm8211.c 2007-11-15 19:11:53.000000000 -0500 ++++ b/drivers/net/wireless/adm8211.c 2007-11-15 20:03:15.000000000 -0500 +@@ -117,7 +117,11 @@ + break; + + default: ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid < ADM8211_REV_CA) ++#else + if (priv->pdev->revision < ADM8211_REV_CA) ++#endif + priv->rf_type = ADM8211_TYPE_RFMD; + else + priv->rf_type = ADM8211_TYPE_AIROHA; +@@ -135,7 +139,11 @@ + case ADM8211_TYPE_ADMTEK: + break; + default: ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid < ADM8211_REV_CA) ++#else + if (priv->pdev->revision < ADM8211_REV_CA) ++#endif + priv->bbp_type = ADM8211_TYPE_RFMD; + else + priv->bbp_type = ADM8211_TYPE_ADMTEK; +@@ -175,7 +183,11 @@ + break; + + default: ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid < ADM8211_REV_CA) ++#else + if (priv->pdev->revision < ADM8211_REV_CA) ++#endif + priv->specific_bbptype = ADM8211_BBP_RFMD3000; + else + priv->specific_bbptype = ADM8211_BBP_ADM8011; +@@ -194,11 +206,23 @@ + break; + + default: ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid == ADM8211_REV_BA) ++#else + if (priv->pdev->revision == ADM8211_REV_BA) ++#endif + priv->transceiver_type = ADM8211_RFMD2958_RF3000_CONTROL_POWER; ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ else if (priv->revid == ADM8211_REV_CA) ++#else + else if (priv->pdev->revision == ADM8211_REV_CA) ++#endif + priv->transceiver_type = ADM8211_AL2210L; ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ else if (priv->revid == ADM8211_REV_AB) ++#else + else if (priv->pdev->revision == ADM8211_REV_AB) ++#endif + priv->transceiver_type = ADM8211_RFMD2948; + + printk(KERN_WARNING "%s (adm8211): Unknown transceiver: %d\n", +@@ -220,7 +244,11 @@ + struct adm8211_priv *priv = dev->priv; + + ADM8211_CSR_WRITE(WEPCTL, addr | ADM8211_WEPCTL_TABLE_WR | ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ (priv->revid < ADM8211_REV_BA ? ++#else + (priv->pdev->revision < ADM8211_REV_BA ? ++#endif + 0 : ADM8211_WEPCTL_SEL_WEPTABLE )); + ADM8211_CSR_READ(WEPCTL); + msleep(1); +@@ -238,7 +266,11 @@ + u32 reg = ADM8211_CSR_READ(WEPCTL); + unsigned int i; + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid < ADM8211_REV_BA) { ++#else + if (priv->pdev->revision < ADM8211_REV_BA) { ++#endif + for (i = 0; i < len; i += 2) { + u16 val = buf[i] | (buf[i + 1] << 8); + adm8211_write_sram(dev, addr + i / 2, val); +@@ -420,7 +452,11 @@ + if (skb) { + struct ieee80211_rx_status rx_status = {0}; + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid < ADM8211_REV_CA) ++#else + if (priv->pdev->revision < ADM8211_REV_CA) ++#endif + rx_status.ssi = rssi; + else + rx_status.ssi = 100 - rssi; +@@ -702,7 +738,11 @@ + adm8211_rf_write_syn_rfmd2958(dev, 0x0A, reg); + /* set TXRX TX_GAIN */ + adm8211_rf_write_syn_rfmd2958(dev, 0x09, 0x00050 | ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ (priv->revid < ADM8211_REV_CA ? tx_power : 0)); ++#else + (priv->pdev->revision < ADM8211_REV_CA ? tx_power : 0)); ++#endif + } else { + reg = ADM8211_CSR_READ(PLCPHD); + reg &= 0xff00ffff; +@@ -721,7 +761,11 @@ + tx_power<<2); + adm8211_write_bbp(dev, RF3000_LOW_GAIN_CALIB, lpf_cutoff); + adm8211_write_bbp(dev, RF3000_HIGH_GAIN_CALIB, lnags_thresh); ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ adm8211_write_bbp(dev, 0x1c, priv->revid == ADM8211_REV_BA ? ++#else + adm8211_write_bbp(dev, 0x1c, priv->pdev->revision == ADM8211_REV_BA ? ++#endif + priv->eeprom->cr28 : 0); + adm8211_write_bbp(dev, 0x1d, priv->eeprom->cr29); + +@@ -760,7 +804,11 @@ + priv->nar |= ADM8211_NAR_EA | ADM8211_NAR_ST | ADM8211_NAR_SR; + + /* don't trust the error bits on rev 0x20 and up in adhoc */ ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid >= ADM8211_REV_BA) ++#else + if (priv->pdev->revision >= ADM8211_REV_BA) ++#endif + priv->soft_rx_crc = 1; + break; + case IEEE80211_IF_TYPE_MNTR: +@@ -861,7 +909,11 @@ + break; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ switch (priv->revid) { ++#else + switch (priv->pdev->revision) { ++#endif + case ADM8211_REV_CA: + if (priv->transceiver_type == ADM8211_RFMD2958 || + priv->transceiver_type == ADM8211_RFMD2958_RF3000_CONTROL_POWER || +@@ -919,7 +971,11 @@ + adm8211_write_bbp(dev, 0x1c, 0x00); + adm8211_write_bbp(dev, 0x1d, 0x80); + } else { ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid == ADM8211_REV_BA) ++#else + if (priv->pdev->revision == ADM8211_REV_BA) ++#endif + adm8211_write_bbp(dev, 0x1c, priv->eeprom->cr28); + else + adm8211_write_bbp(dev, 0x1c, 0x00); +@@ -1051,7 +1107,11 @@ + u8 rate_buf[12] = {0}; + + /* write supported rates */ ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid != ADM8211_REV_BA) { ++#else + if (priv->pdev->revision != ADM8211_REV_BA) { ++#endif + rate_buf[0] = ARRAY_SIZE(adm8211_rates); + for (i = 0; i < ARRAY_SIZE(adm8211_rates); i++) + rate_buf[i + 1] = (adm8211_rates[i].rate / 5) | 0x80; +@@ -1135,7 +1195,11 @@ + * PWR0PE2 = 13 us + * PWR1PE2 = 1 us + * PWR0TXPE = 8 or 6 */ ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid < ADM8211_REV_CA) ++#else + if (priv->pdev->revision < ADM8211_REV_CA) ++#endif + ADM8211_CSR_WRITE(TOFS2, 0x8815cd18); + else + ADM8211_CSR_WRITE(TOFS2, 0x8535cd16); +@@ -1164,7 +1228,11 @@ + + /* SLOT=20 us, SIFS=110 cycles of 22 MHz (5 us), + * DIFS=50 us, EIFS=100 us */ ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid < ADM8211_REV_CA) ++#else + if (priv->pdev->revision < ADM8211_REV_CA) ++#endif + ADM8211_CSR_WRITE(IFST, (20 << 23) | (110 << 15) | + (50 << 9) | 100); + else +@@ -1223,13 +1291,21 @@ + + ADM8211_CSR_WRITE(PAR, tmp); + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid == ADM8211_REV_BA && ++#else + if (priv->pdev->revision == ADM8211_REV_BA && ++#endif + (priv->transceiver_type == ADM8211_RFMD2958_RF3000_CONTROL_POWER || + priv->transceiver_type == ADM8211_RFMD2958)) { + reg = ADM8211_CSR_READ(CSR_TEST1); + reg |= (1 << 4) | (1 << 5); + ADM8211_CSR_WRITE(CSR_TEST1, reg); ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ } else if (priv->revid == ADM8211_REV_CA) { ++#else + } else if (priv->pdev->revision == ADM8211_REV_CA) { ++#endif + reg = ADM8211_CSR_READ(CSR_TEST1); + reg &= ~((1 << 4) | (1 << 5)); + ADM8211_CSR_WRITE(CSR_TEST1, reg); +@@ -1866,6 +1942,9 @@ + pci_name(pdev)); + goto err_iounmap; + } ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ pci_read_config_byte(pdev, PCI_CLASS_REVISION, &priv->revid); ++#endif + + *(u32 *)perm_addr = le32_to_cpu((__force __le32)ADM8211_CSR_READ(PAR0)); + *(u16 *)&perm_addr[4] = +@@ -1901,7 +1980,11 @@ + priv->mode = IEEE80211_IF_TYPE_INVALID; + + /* Power-on issue. EEPROM won't read correctly without */ ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ if (priv->revid >= ADM8211_REV_BA) { ++#else + if (pdev->revision >= ADM8211_REV_BA) { ++#endif + ADM8211_CSR_WRITE(FRCTL, 0); + ADM8211_CSR_READ(FRCTL); + ADM8211_CSR_WRITE(FRCTL, 1); +@@ -1934,7 +2017,11 @@ + + printk(KERN_INFO "%s: hwaddr %s, Rev 0x%02x\n", + wiphy_name(dev->wiphy), print_mac(mac, dev->wiphy->perm_addr), ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)) ++ priv->revid); ++#else + pdev->revision); ++#endif + + return 0; + +--- a/drivers/net/wireless/Makefile 2007-11-15 20:36:34.000000000 -0500 ++++ b/drivers/net/wireless/Makefile 2007-11-15 20:37:26.000000000 -0500 +@@ -2,52 +2,10 @@ + # Makefile for the Linux Wireless network device drivers. + # + +-obj-$(CONFIG_IPW2100) += ipw2100.o +- +-obj-$(CONFIG_IPW2200) += ipw2200.o +- +-obj-$(CONFIG_STRIP) += strip.o +-obj-$(CONFIG_ARLAN) += arlan.o +- +-arlan-objs := arlan-main.o arlan-proc.o +- +-# Obsolete cards +-obj-$(CONFIG_WAVELAN) += wavelan.o +-obj-$(CONFIG_PCMCIA_NETWAVE) += netwave_cs.o +-obj-$(CONFIG_PCMCIA_WAVELAN) += wavelan_cs.o +- +-obj-$(CONFIG_HERMES) += orinoco.o hermes.o +-obj-$(CONFIG_PCMCIA_HERMES) += orinoco_cs.o +-obj-$(CONFIG_APPLE_AIRPORT) += airport.o +-obj-$(CONFIG_PLX_HERMES) += orinoco_plx.o +-obj-$(CONFIG_PCI_HERMES) += orinoco_pci.o +-obj-$(CONFIG_TMD_HERMES) += orinoco_tmd.o +-obj-$(CONFIG_NORTEL_HERMES) += orinoco_nortel.o +-obj-$(CONFIG_PCMCIA_SPECTRUM) += spectrum_cs.o +- +-obj-$(CONFIG_AIRO) += airo.o +-obj-$(CONFIG_AIRO_CS) += airo_cs.o airo.o +- +-obj-$(CONFIG_ATMEL) += atmel.o +-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/ +-obj-$(CONFIG_BCM43XX) += bcm43xx/ + obj-$(CONFIG_B43) += b43/ + obj-$(CONFIG_B43LEGACY) += b43legacy/ +-obj-$(CONFIG_ZD1211RW) += zd1211rw/ + obj-$(CONFIG_ZD1211RW_MAC80211) += zd1211rw-mac80211/ + +-# 16-bit wireless PCMCIA client drivers +-obj-$(CONFIG_PCMCIA_RAYCS) += ray_cs.o +-obj-$(CONFIG_PCMCIA_WL3501) += wl3501_cs.o +- +-obj-$(CONFIG_USB_ZD1201) += zd1201.o + obj-$(CONFIG_LIBERTAS) += libertas/ + + rtl8180-objs := rtl8180_dev.o rtl8180_rtl8225.o +--- a/drivers/net/wireless/libertas/dev.h 2007-11-15 20:19:33.000000000 -0500 ++++ b/drivers/net/wireless/libertas/dev.h 2007-11-15 20:27:51.000000000 -0500 +@@ -11,6 +11,7 @@ + #include <linux/ethtool.h> + #include <linux/debugfs.h> + #include <net/ieee80211.h> ++#include <net/compat.h> + + #include "defs.h" + #include "scan.h" +--- a/drivers/net/wireless/libertas/ethtool.c 2007-11-15 20:41:59.000000000 -0500 ++++ b/drivers/net/wireless/libertas/ethtool.c 2007-11-15 20:44:28.000000000 -0500 +@@ -143,6 +143,7 @@ + lbs_deb_enter(LBS_DEB_ETHTOOL); + } + ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) + static int libertas_ethtool_get_sset_count(struct net_device * dev, int sset) + { + switch (sset) { +@@ -152,6 +153,7 @@ + return -EOPNOTSUPP; + } + } ++#endif + + static void libertas_ethtool_get_strings (struct net_device * dev, + u32 stringset, +@@ -177,7 +179,9 @@ + .get_drvinfo = libertas_ethtool_get_drvinfo, + .get_eeprom = libertas_ethtool_get_eeprom, + .get_eeprom_len = libertas_ethtool_get_eeprom_len, ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)) + .get_sset_count = libertas_ethtool_get_sset_count, ++#endif + .get_ethtool_stats = libertas_ethtool_get_stats, + .get_strings = libertas_ethtool_get_strings, + }; +--- a/drivers/misc/Makefile 2007-11-15 22:15:29.000000000 -0500 ++++ b/drivers/misc/Makefile 2007-11-15 22:15:45.000000000 -0500 +@@ -3,17 +3,4 @@ + # + obj- := misc.o # Dummy rule to force built-in.o to be made + +-obj-$(CONFIG_IBM_ASM) += ibmasm/ +-obj-$(CONFIG_HDPU_FEATURES) += hdpuftrs/ +-obj-$(CONFIG_MSI_LAPTOP) += msi-laptop.o +-obj-$(CONFIG_ASUS_LAPTOP) += asus-laptop.o +-obj-$(CONFIG_ATMEL_SSC) += atmel-ssc.o +-obj-$(CONFIG_LKDTM) += lkdtm.o +-obj-$(CONFIG_TIFM_CORE) += tifm_core.o +-obj-$(CONFIG_TIFM_7XX1) += tifm_7xx1.o +-obj-$(CONFIG_PHANTOM) += phantom.o +-obj-$(CONFIG_SGI_IOC4) += ioc4.o +-obj-$(CONFIG_SONY_LAPTOP) += sony-laptop.o +-obj-$(CONFIG_THINKPAD_ACPI) += thinkpad_acpi.o +-obj-$(CONFIG_FUJITSU_LAPTOP) += fujitsu-laptop.o + obj-$(CONFIG_EEPROM_93CX6) += eeprom_93cx6.o diff --git a/compat/compat.h b/compat/compat.h index 6ae32ef..f61c16f 100644 --- a/compat/compat.h +++ b/compat/compat.h @@ -19,22 +19,27 @@ #define CONFIG_IWL3945 1 #define CONFIG_IWL4965 1 #define CONFIG_ZD1211RW_MAC80211 1 -/* +#if 1 #define CONFIG_B43 -#define CONFIG_B43_RFKILL 1 -#define CONFIG_B43_LEDS 1 +//#define CONFIG_B43_RFKILL 1 +//#define CONFIG_B43_LEDS 1 #define CONFIG_B43_PCMCIA 1 -#define CONFIG_B43_DEBUG 1 +//#define CONFIG_B43_DEBUG 1 #define CONFIG_B43_DMA 1 #define CONFIG_B43_PIO 1 + #define CONFIG_SSB 1 #define CONFIG_SSB_PCIHOST 1 #define CONFIG_SSB_PCMCIAHOST 1 -#define CONFIG_SSB_DRIVER_MIPS 1 -#define CONFIG_SSB_DRIVER_EXTIF 1 +#undef CONFIG_SSB_DRIVER_MIPS +//#define CONFIG_SSB_DRIVER_EXTIF 1 #define CONFIG_SSB_DRIVER_PCICORE 1 #define CONFIG_SSB_PCIHOST 1 -*/ +/* For mips */ +#undef CONFIG_SSB_PCICORE_HOSTMODE +#endif + +#define CONFIG_RT2X00_LIB_FIRMWARE 1 /* Compat work for 2.6.22 and 2.6.23 */ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) @@ -140,6 +145,23 @@ struct genl_multicast_group u32 id; }; +/* Added as of 2.6.23 */ +int pci_try_set_mwi(struct pci_dev *dev); + +/* Added as of 2.6.23 */ +#ifdef CONFIG_PM_SLEEP +/* + * Tell the freezer that the current task should be frozen by it + */ +static inline void set_freezable(void) +{ + current->flags &= ~PF_NOFREEZE; +} + +#else +static inline void set_freezable(void) {} +#endif + #endif #endif @@ -7,6 +7,11 @@ # build time. export +# Intel's ipws, needs the old ieee80211, eh, not yet. This will +# requires some work. +CONFIG_IPW2100=n +CONFIG_IPW2200=n + # Wireless subsystem stuff CONFIG_MAC80211=m CONFIG_MAC80211_RCSIMPLE=y @@ -17,23 +22,76 @@ CONFIG_NL80211=n # Drivers CONFIG_ATH5K=m CONFIG_IWL3945=m -# This guy just needs testing -CONFIG_IWL4965=n +CONFIG_IWL4965=m CONFIG_ZD1211RW_MAC80211=m +# CONFIG_ZD1211RW_MAC80211_DEBUG is not set # Not yet, set to m when ready -CONFIG_B43=n -CONFIG_B43_RFKILL=n -CONFIG_B43_LEDS=n -CONFIG_B43_PCMCIA=n -CONFIG_B43_DEBUG=n +CONFIG_B43=m +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PCICORE_AUTOSELECT=y +#CONFIG_B43_RFKILL=n +#CONFIG_B43_LEDS=n +# B43 uses PCMCIA only for Compact Flash. The Cardbus cards uses PCI +# Example, bcm4318: +# http://www.multicap.biz/wireless-lan/indoor-wlan-hardware/sdc-cf10g-80211g-compact-flash-module +CONFIG_B43_PCMCIA=y +# CONFIG_B43_DEBUG is not set CONFIG_B43_DMA=y CONFIG_B43_PIO=y +CONFIG_B43_DMA_AND_PIO_MODE=y + +CONFIG_B43LEGACY=n +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_PIO=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y + +# Libertas +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_CS=m + +# This is required for some cards +CONFIG_EEPROM_93CX6=m + +# Realtek +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_ADM8211=m + +# rt2x00 +# Not enabled yet, needs some more compat work +CONFIG_RT2X00=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2400PCI=m +# CONFIG_RT2400PCI_RFKILL is not set +CONFIG_RT2500PCI=m +# CONFIG_RT2500PCI_RFKILL is not set +CONFIG_RT61PCI=m +# CONFIG_RT61PCI_RFKILL is not set +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +# CONFIG_RT2X00_LIB_DEBUGFS is not set +# CONFIG_RT2X00_DEBUG is not se + +# p54 +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_P54_PCI=m -CONFIG_SSB=n -CONFIG_SSB_PCIHOST=n -CONFIG_SSB_PCMCIAHOST=n +# Sonics Silicon Backplane +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB=m +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_PCMCIAHOST=y +# CONFIG_SSB_DEBUG is not set CONFIG_SSB_DRIVER_MIPS=n -CONFIG_SSB_DRIVER_EXTIF=n -CONFIG_SSB_DRIVER_PCICORE=n -CONFIG_SSB_PCIHOST=n +# CONFIG_SSB_DRIVER_EXTIF=y +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y diff --git a/scripts/admin-update.sh b/scripts/admin-update.sh index 6beca23..ec6967c 100755 --- a/scripts/admin-update.sh +++ b/scripts/admin-update.sh @@ -9,7 +9,8 @@ # We assume you have it on your ~/devel/wireless-2.6/ directory. If you do, # just run this script from the compat-wireless-2.6 directory. -INCLUDE_LINUX="ieee80211.h nl80211.h wireless.h pci_ids.h bitops.h" +INCLUDE_LINUX="ieee80211.h nl80211.h wireless.h" +INCLUDE_LINUX="$INCLUDE_LINUX pci_ids.h bitops.h eeprom_93cx6.h" INCLUDE_NET="cfg80211.h ieee80211_radiotap.h iw_handler.h" INCLUDE_NET="$INCLUDE_NET mac80211.h wext.h wireless.h" @@ -17,10 +18,26 @@ INCLUDE_NET="$INCLUDE_NET mac80211.h wext.h wireless.h" NET_DIRS="wireless mac80211" GIT_TREE="/home/$USER/devel/wireless-2.6" +# Drivers that have their own directory DRIVERS="drivers/net/wireless/ath5k" -DRIVERS="$DRIVERS drivers/ssb drivers/net/wireless/b43" +DRIVERS="$DRIVERS drivers/ssb" +DRIVERS="$DRIVERS drivers/net/wireless/b43" +DRIVERS="$DRIVERS drivers/net/wireless/b43legacy" DRIVERS="$DRIVERS drivers/net/wireless/iwlwifi" +DRIVERS="$DRIVERS drivers/net/wireless/rt2x00" DRIVERS="$DRIVERS drivers/net/wireless/zd1211rw-mac80211" +DRIVERS="$DRIVERS drivers/net/wireless/libertas" + +# Drivers that belong the the wireless directory +DRIVER_FILES="rtl818x.h" +DRIVER_FILES="$DRIVER_FILES rtl8180.h rtl8180_rtl8225.h" +DRIVER_FILES="$DRIVER_FILES rtl8180_dev.c rtl8180_rtl8225.c" +DRIVER_FILES="$DRIVER_FILES rtl8187.h rtl8187_rtl8225.h" +DRIVER_FILES="$DRIVER_FILES rtl8187_dev.c rtl8187_rtl8225.c" +DRIVER_FILES="$DRIVER_FILES adm8211.c adm8211.h" +DRIVER_FILES="$DRIVER_FILES p54.h p54common.h p54common.c net2280.h" +DRIVER_FILES="$DRIVER_FILES p54pci.h p54pci.c" +DRIVER_FILES="$DRIVER_FILES p54usb.h p54usb.c" mkdir -p include/linux/ include/net/ \ net/mac80211/ net/wireless/ \ @@ -51,13 +68,26 @@ for i in $NET_DIRS; do rm -f net/$i/*.mod.c done -# drivers +# Drivers in their own directory for i in $DRIVERS; do mkdir -p $i cp $GIT_TREE/$i/*.[ch] $i/ cp $GIT_TREE/$i/Makefile $i/ - rm -f net/$i/*.mod.c + rm -f $i/*.mod.c +done + +# Misc +mkdir -p drivers/misc/ +cp $GIT_TREE/drivers/misc/eeprom_93cx6.c drivers/misc/ +cp $GIT_TREE/drivers/misc/Makefile drivers/misc/ + +DIR="drivers/net/wireless" +# Drivers part of the wireless directory +for i in $DRIVER_FILES; do + cp $GIT_TREE/$DIR/$i $DIR/ done +# Top level wireless driver Makefile +cp $GIT_TREE/$DIR/Makefile $DIR # Compat stuff cp compat/compat.c net/mac80211/ diff --git a/scripts/athenable b/scripts/athenable index 8d033b2..176e320 100755 --- a/scripts/athenable +++ b/scripts/athenable @@ -5,6 +5,8 @@ # Makes sure either ath5k or MadWifi are ready to be used. This allows # us to choose any driver without blacklisting each other. +. /usr/lib/compat-wireless/modlib.sh + if [[ $UID -ne 0 ]]; then echo "Run with root privileges" exit @@ -14,85 +16,8 @@ ATH5K="ath5k" MADWIFI="ath_pci" # Appended to module file at the end when we want to ignore one IGNORE_SUFFIX=".ignore" -VER=`uname -r` USAGE="Usage: $0 [ ath5k | madwifi ]" -# If 'module' is found, its renamed to 'module.ignore' -function module_disable { - # Basic check to see if this is a module available for loading - MODULE_CHECK=`modprobe -l $1` - if [ -z $MODULE_CHECK ]; then - echo "Module $1 not detected -- this is fine" - return - fi - MODULE=$1 - MODULE_KO=${MODULE}.ko - # In case there are more than one of these modules. This can - # happen, for example if your distribution provides one and you have - # compiled one in yourself later. - MODULE_COUNT=`find /lib/modules/$VER/ -name $MODULE_KO | wc -l` - ALL_MODULES=`find /lib/modules/$VER/ -name $MODULE_KO` - COUNT=1 - CHECK=`modprobe -l $MODULE` - while [ ! -z $CHECK ]; do - if [[ $MODULE_COUNT -gt 1 ]]; then - if [[ $COUNT -eq 1 ]]; then - echo -en "$MODULE_COUNT $MODULE modules found " - echo -e "we'll disable all of them" - fi - echo -en "Disabling $MODULE ($COUNT) ..." - else - echo -en "Disabling $MODULE ..." - fi - mv -f $CHECK ${CHECK}${IGNORE_SUFFIX} - depmod -ae - CHECK_AGAIN=`modprobe -l $MODULE` - if [ "$CHECK" != "$CHECK_AGAIN" ]; then - echo -e "\t[OK]\tModule disabled:" - echo "$CHECK" - else - echo -e "[ERROR]\tModule is still being detected:" - echo "$CHECK" - fi - let COUNT=$COUNT+1 - CHECK=$CHECK_AGAIN - done -} - -# If 'module.ignore' is found, rename it back to 'module' -function module_enable { - MODULE=$1 - MODULE_KO=${MODULE}.ko - IGNORED_MODULE=${MODULE_KO}${IGNORE_SUFFIX} - # In case there are more than one of these modules. This can - # happen, for example if your distribution provides one and you have - # compiled one in yourself later. - ALL_MODULES=`find /lib/modules/$VER/ -name $IGNORED_MODULE` - for i in $ALL_MODULES; do - echo -en "Enabling $MODULE ..." - DIR=`dirname $i` - mv $i $DIR/$MODULE_KO - depmod -ae - CHECK=`modprobe -l $MODULE` - if [ "$DIR/$MODULE_KO" != $CHECK ]; then - if [ -z $CHECK ]; then - echo -e "\t[ERROR]\tModule could not be enabled" - else - echo -en "\t[OK]\tModule renamed but another " - echo "module file is being preferred" - echo -e "Renamed module:\t\t$DIR/$MODULE_KO" - echo -e "Preferred module:\t$CHECK" - fi - else - echo -e "\t[OK]\tModule enabled: " - echo "$DIR/$MODULE_KO" - fi - # Lets only do this for the first module found - break - done -} - - # Default behavior: disables any MadWifi driver present and makes sure # ath5k is enabled if [ $# -eq 0 ]; then @@ -100,8 +25,8 @@ if [ $# -eq 0 ]; then module_enable $ATH5K exit elif [ $# -ne 1 ]; then - echo "$USAGE" - exit + echo "$USAGE" + exit fi MODULE=$1 diff --git a/scripts/athload b/scripts/athload index 4713dea..84b5103 100755 --- a/scripts/athload +++ b/scripts/athload @@ -3,6 +3,8 @@ # # Loads ath5k or madwifi +. /usr/lib/compat-wireless/modlib.sh + if [[ $UID -ne 0 ]]; then echo "Run with root privileges" exit @@ -13,7 +15,7 @@ USAGE="Usage: $0 [ ath5k | madwifi ]" # Default behavior: unload MadWifi and load ath5k if [ $# -eq 0 ]; then - ./scripts/athenable ath5k + athenable ath5k exit elif [ $# -ne 1 ]; then echo "$USAGE" @@ -22,8 +24,8 @@ fi MODULE=$1 if [ "$MODULE" == "ath5k" ]; then - ./scripts/madwifi-unload - ./scripts/athenable ath5k + madwifi-unload + athenable ath5k modprobe ath5k CHECK=`modprobe -l ath5k` if [ ! -z $CHECK ]; then @@ -35,10 +37,10 @@ elif [ "$MODULE" == "madwifi" ]; then echo "ath5k currently loaded, going to try to unload the module..." modprobe -r --ignore-remove ath5k fi - ./scripts/athenable madwifi + athenable madwifi # MadWifi may be loaded, but it doesn't mean devices # currently available were picked up - ./scripts/madwifi-unload 2>&1 > /dev/null + madwifi-unload 2>&1 > /dev/null modprobe ath_pci CHECK=`modprobe -l ath_pci` if [ ! -z $CHECK ]; then diff --git a/scripts/b43enable b/scripts/b43enable new file mode 100755 index 0000000..5ecf65a --- /dev/null +++ b/scripts/b43enable @@ -0,0 +1,50 @@ +#!/bin/bash +# +# Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> +# +# Makes sure either b43, b43legacy (new mac80211 drivers) or bcm43xx +# is enabled to be used. This allows us to choose any driver without +# blacklisting each other. + +. /usr/lib/compat-wireless/modlib.sh + +if [[ $UID -ne 0 ]]; then + echo "Run with root privileges" + exit +fi + +B43S="b43 b43legacy" +B43_OLD="bcm43xx" + +# Appended to module file at the end when we want to ignore one +USAGE="Usage: $0 [ b43 | bcm43xx ]" + +function enable_b43 { + module_disable $B43_OLD + for i in $B43S; do + module_enable $i + done +} + +# Default behavior: disables the old bcm43xx driver and enables b43 +# and b43legacy +if [ $# -eq 0 ]; then + enable_b43 + exit +elif [ $# -ne 1 ]; then + echo "$USAGE" + exit +fi + +MODULE=$1 +if [ "$MODULE" == "bcm43xx" ]; then + for i in $B43S; do + module_disable $i + done + module_enable $B43_OLD +elif [ "$MODULE" == "b43" ]; then + enable_b43 +else + echo "$USAGE" + exit +fi diff --git a/scripts/b43load b/scripts/b43load new file mode 100755 index 0000000..0b9fb83 --- /dev/null +++ b/scripts/b43load @@ -0,0 +1,62 @@ +#!/bin/bash +# Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> +# +# Loads new broadcom drivers (b43 and b43legacy) or the old ones (bcm43xx) + +. /usr/lib/compat-wireless/modlib.sh + +if [[ $UID -ne 0 ]]; then + echo "Run with root privileges" + exit +fi + + +USAGE="Usage: $0 [ b43 | bcm43xx ]" + +# Default behavior: unload bcm43xx and load b43 and b43legacy +if [ $# -eq 0 ]; then + b43enable b43 + exit +elif [ $# -ne 1 ]; then + echo "$USAGE" + exit +fi + +MODULE=$1 +if [ "$MODULE" == "b43" ]; then + modprobe -r --ignore-remove bcm43xx + # Enables both b43 and b43legacy + b43enable b43 + modprobe b43 + modprobe b43legacy + CHECK=`modprobe -l b43` + if [ ! -z $CHECK ]; then + echo "b43 loaded successfully" + fi + CHECK=`modprobe -l b43legacy` + if [ ! -z $CHECK ]; then + echo "b43legacy loaded successfully" + fi +elif [ "$MODULE" == "bcm43xx" ]; then + CHECK=`modprobe -l b43` + if [ ! -z $CHECK ]; then + echo "b43 currently loaded, going to try to unload the module..." + modprobe -r --ignore-remove b43 + fi + CHECK=`modprobe -l b43legacy` + if [ ! -z $CHECK ]; then + echo "b43legacy currently loaded, going to try to unload the module..." + modprobe -r --ignore-remove b43legacy + fi + b43enable bcm43xx + # bcm43xx may be loaded already lets remove them first + modprobe -r --ignore-remov bcm43xx 2>&1 > /dev/null + modprobe bcm43xx + CHECK=`modprobe -l bcm43xx` + if [ ! -z $CHECK ]; then + echo "bcm43xx loaded successfully!" + fi +else + echo "$USAGE" + exit +fi diff --git a/scripts/load.sh b/scripts/load.sh index 8e2c5dd..a115fa5 100755 --- a/scripts/load.sh +++ b/scripts/load.sh @@ -1,8 +1,17 @@ #!/bin/bash -MODULES="iwl3945 zd1211rw-mac80211" +MODULES="p54pci p54usb" +MODULES="$MODULES zd1211rw-mac80211 rtl8180 rtl8187" +MODULES="$MODULES p54pci p54usb iwl3945 zd1211rw-mac80211 rtl8180 rtl8187" +MODULES="$MODULES iwl3945 iwl4965" +MODULES="$MODULES rtl8180 rtl8187" +MODULES="$MODULES rtl8180 rtl8187" +MODULES="$MODULES rt2400pci rt2500pci rt61pci" +MODULES="$MODULES rt2500usb rt73usb" for i in $MODULES; do echo Loading $i... modprobe $i done # For ath5k we must be sure to unload MadWifi first athload ath5k +# For b43 we must make sure to unload bcm43xx first +b43load b43 diff --git a/scripts/modlib.sh b/scripts/modlib.sh new file mode 100755 index 0000000..4f072b3 --- /dev/null +++ b/scripts/modlib.sh @@ -0,0 +1,88 @@ +#!/bin/bash +# +# Copyright 2007 Luis R. Rodriguez <mcgrof@winlab.rutgers.edu> +# +# You can use these to enable/disable modules without blacklisting them + +# Make sure our imporant paths are included +PATH=$PATH:/usr/sbin:/sbin + +# Appended to module file at the end when we want to ignore one +IGNORE_SUFFIX=".ignore" +VER=`uname -r` + +# If 'module' is found, its renamed to 'module.ignore' +function module_disable { + # Basic check to see if this is a module available for loading + MODULE_CHECK=`modprobe -l $1` + if [ -z $MODULE_CHECK ]; then + echo "Module $1 not detected -- this is fine" + return + fi + MODULE=$1 + MODULE_KO=${MODULE}.ko + # In case there are more than one of these modules. This can + # happen, for example if your distribution provides one and you have + # compiled one in yourself later. + MODULE_COUNT=`find /lib/modules/$VER/ -name $MODULE_KO | wc -l` + ALL_MODULES=`find /lib/modules/$VER/ -name $MODULE_KO` + COUNT=1 + CHECK=`modprobe -l $MODULE` + while [ ! -z $CHECK ]; do + if [[ $MODULE_COUNT -gt 1 ]]; then + if [[ $COUNT -eq 1 ]]; then + echo -en "$MODULE_COUNT $MODULE modules found " + echo -e "we'll disable all of them" + fi + echo -en "Disabling $MODULE ($COUNT) ..." + else + echo -en "Disabling $MODULE ..." + fi + mv -f $CHECK ${CHECK}${IGNORE_SUFFIX} + depmod -ae + CHECK_AGAIN=`modprobe -l $MODULE` + if [ "$CHECK" != "$CHECK_AGAIN" ]; then + echo -e "\t[OK]\tModule disabled:" + echo "$CHECK" + else + echo -e "[ERROR]\tModule is still being detected:" + echo "$CHECK" + fi + let COUNT=$COUNT+1 + CHECK=$CHECK_AGAIN + done +} + +# If 'module.ignore' is found, rename it back to 'module' +function module_enable { + MODULE=$1 + MODULE_KO=${MODULE}.ko + IGNORED_MODULE=${MODULE_KO}${IGNORE_SUFFIX} + # In case there are more than one of these modules. This can + # happen, for example if your distribution provides one and you have + # compiled one in yourself later. + ALL_MODULES=`find /lib/modules/$VER/ -name $IGNORED_MODULE` + for i in $ALL_MODULES; do + echo -en "Enabling $MODULE ..." + DIR=`dirname $i` + mv $i $DIR/$MODULE_KO + depmod -ae + CHECK=`modprobe -l $MODULE` + if [ "$DIR/$MODULE_KO" != $CHECK ]; then + if [ -z $CHECK ]; then + echo -e "\t[ERROR]\tModule could not be enabled" + else + echo -en "\t[OK]\tModule renamed but another " + echo "module file is being preferred" + echo -e "Renamed module:\t\t$DIR/$MODULE_KO" + echo -e "Preferred module:\t$CHECK" + fi + else + echo -e "\t[OK]\tModule enabled: " + echo "$DIR/$MODULE_KO" + fi + # Lets only do this for the first module found + break + done +} + diff --git a/scripts/unload.sh b/scripts/unload.sh index e7e743c..2e979e7 100755 --- a/scripts/unload.sh +++ b/scripts/unload.sh @@ -1,7 +1,20 @@ #!/bin/bash +# The old stack drivers and the mac80211 rc80211_simple modules +# which is no longer on recent kernels (its internal) OLD_MODULES="zd1211rw rc80211_simple" -MODULES="$OLD_MODULES ath5k iwl3945 zd1211rw-mac80211" +MODULES="$OLD_MODULES" +MODULES="$MODULES iwl3945 iwl4965" +MODULES="$MODULES ath5k zd1211rw-mac80211" +MODULES="$MODULES p54pci p54usb p54common" +MODULES="$MODULES libertas libertas_cs usb8xxx" +MODULES="$MODULES rt2400pci rt2500pci rt61pci" +MODULES="$MODULES rt2500usb rt73usb" +MODULES="$MODULES rt2x00usb rt2x00lib" +MODULES="$MODULES rtl8180 rtl8187" +# eeprom_93cx6 is used by rt2x00 (rt61pci, rt2500pci, rt2400pci) +# and Realtek drivers ( rtl8187, rtl8180) +MODULES="$MODULES eeprom_93cx6" MODULES="$MODULES mac80211 cfg80211" MADWIFI_MODULES="ath_pci ath_rate_sample wlan_scan_sta wlan ath_hal" IPW3945D="/sbin/ipw3945d-`uname -r`" |