Update compat.diff for the latest pull from wireless-testing, also fix rt2x00
configuration on config.mk.

Signed-off-by: Luis R. Rodriguez <mcgrof@winlab.rutgers.edu>
diff --git a/compat/compat.diff b/compat/compat.diff
index 790f722..b89b636 100644
--- a/compat/compat.diff
+++ b/compat/compat.diff
@@ -91,44 +91,6 @@
  
  
  struct pcmcia_device;
---- a/drivers/ssb/main.c	2008-02-28 19:54:52.000000000 +0100
-+++ b/drivers/ssb/main.c	2008-02-28 19:54:53.000000000 +0100
-@@ -321,6 +321,27 @@ static int ssb_bus_match(struct device *
- 	return 0;
- }
- 
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24))
-+static int ssb_device_uevent(struct device *dev, char **envp,
-+	int num_envp, char *buffer, int buffer_size)
-+{
-+	struct ssb_device *ssb_dev = dev_to_ssb_dev(dev);
-+	int cur_index = 0, cur_len = 0;
-+
-+	if (!dev)
-+		return -ENODEV;
-+
-+	return add_uevent_var(envp,
-+			num_envp,
-+			&cur_index,
-+			buffer,
-+			buffer_size,
-+			&cur_len,
-+			"MODALIAS=ssb:v%04Xid%04Xrev%02X",
-+			ssb_dev->id.vendor, ssb_dev->id.coreid,
-+			ssb_dev->id.revision);
-+}
-+#else
- static int ssb_device_uevent(struct device *dev, struct kobj_uevent_env *env)
- {
- 	struct ssb_device *ssb_dev = dev_to_ssb_dev(dev);
-@@ -333,6 +354,7 @@ static int ssb_device_uevent(struct devi
- 			     ssb_dev->id.vendor, ssb_dev->id.coreid,
- 			     ssb_dev->id.revision);
- }
-+#endif
- 
- static struct bus_type ssb_bustype = {
- 	.name		= "ssb",
 --- a/net/mac80211/util.c	2008-02-28 19:54:52.000000000 +0100
 +++ b/net/mac80211/util.c	2008-02-28 19:54:53.000000000 +0100
 @@ -20,9 +20,15 @@
@@ -623,15 +585,6 @@
  
  	return 0;
  
---- a/drivers/net/wireless/zd1211rw/zd_mac.c	2008-02-21 13:07:01.000000000 -0500
-+++ b/drivers/net/wireless/zd1211rw/zd_mac.c	2008-02-21 13:07:01.000000000 -0500
-@@ -971,5 +971,5 @@
- 	dev_dbg_f(zd_mac_dev(mac), "\n");
- 	cancel_rearming_delayed_workqueue(zd_workqueue,
- 		&mac->housekeeping.link_led_work);
--	zd_chip_control_leds(&mac->chip, LED_OFF);
-+	zd_chip_control_leds(&mac->chip, LED_OFF_ZD);
- }
 --- a/net/mac80211/ieee80211.c	2008-02-28 13:35:06.000000000 -0500
 +++ b/net/mac80211/ieee80211.c	2008-02-28 13:35:08.000000000 -0500
 @@ -21,7 +21,9 @@
@@ -832,9 +785,56 @@
  			return -EINVAL;
  	}
  	return 0;
---- a/drivers/net/wireless/zd1211rw/zd_chip.c	2008-03-02 22:24:54.000000000 -0500
-+++ b/drivers/net/wireless/zd1211rw/zd_chip.c	2008-03-02 22:24:54.000000000 -0500
-@@ -1280,7 +1280,7 @@
+--- a/drivers/ssb/main.c	2008-03-07 20:02:05.000000000 -0500
++++ b/drivers/ssb/main.c	2008-03-07 20:02:07.000000000 -0500
+@@ -341,6 +341,27 @@
+ 	return 0;
+ }
+ 
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24))
++static int ssb_device_uevent(struct device *dev, char **envp,
++	int num_envp, char *buffer, int buffer_size)
++{
++	struct ssb_device *ssb_dev = dev_to_ssb_dev(dev);
++	int cur_index = 0, cur_len = 0;
++
++	if (!dev)
++		return -ENODEV;
++
++	return add_uevent_var(envp,
++			num_envp,
++			&cur_index,
++			buffer,
++			buffer_size,
++			&cur_len,
++			"MODALIAS=ssb:v%04Xid%04Xrev%02X",
++			ssb_dev->id.vendor, ssb_dev->id.coreid,
++			ssb_dev->id.revision);
++}
++#else
+ static int ssb_device_uevent(struct device *dev, struct kobj_uevent_env *env)
+ {
+ 	struct ssb_device *ssb_dev = dev_to_ssb_dev(dev);
+@@ -353,6 +374,7 @@
+ 			     ssb_dev->id.vendor, ssb_dev->id.coreid,
+ 			     ssb_dev->id.revision);
+ }
++#endif
+ 
+ static struct bus_type ssb_bustype = {
+ 	.name		= "ssb",
+--- a/drivers/net/wireless/zd1211rw/zd_mac.c	2008-03-07 20:02:06.000000000 -0500
++++ b/drivers/net/wireless/zd1211rw/zd_mac.c	2008-03-07 20:02:07.000000000 -0500
+@@ -1042,5 +1042,5 @@
+ 	dev_dbg_f(zd_mac_dev(mac), "\n");
+ 	cancel_rearming_delayed_workqueue(zd_workqueue,
+ 		&mac->housekeeping.link_led_work);
+-	zd_chip_control_leds(&mac->chip, LED_OFF);
++	zd_chip_control_leds(&mac->chip, LED_OFF_ZD);
+ }
+--- a/drivers/net/wireless/zd1211rw/zd_chip.c	2008-03-07 20:02:06.000000000 -0500
++++ b/drivers/net/wireless/zd1211rw/zd_chip.c	2008-03-07 20:02:07.000000000 -0500
+@@ -1281,7 +1281,7 @@
  	other_led = chip->link_led == LED1 ? LED2 : LED1;
  
  	switch (status) {
@@ -843,9 +843,9 @@
  		ioreqs[0].value = FW_LINK_OFF;
  		ioreqs[1].value = v[1] & ~(LED1|LED2);
  		break;
---- a/drivers/net/wireless/zd1211rw/zd_chip.h	2008-03-02 22:26:47.000000000 -0500
-+++ b/drivers/net/wireless/zd1211rw/zd_chip.h	2008-03-02 22:26:48.000000000 -0500
-@@ -889,7 +889,7 @@
+--- a/drivers/net/wireless/zd1211rw/zd_chip.h	2008-03-07 20:02:06.000000000 -0500
++++ b/drivers/net/wireless/zd1211rw/zd_chip.h	2008-03-07 20:02:07.000000000 -0500
+@@ -897,7 +897,7 @@
  int zd_chip_unlock_phy_regs(struct zd_chip *chip);
  
  enum led_status {
@@ -854,13 +854,29 @@
  	LED_SCANNING = 1,
  	LED_ASSOCIATED = 2,
  };
---- a/drivers/net/wireless/Makefile	2008-03-02 22:29:20.000000000 -0500
-+++ b/drivers/net/wireless/Makefile	2008-03-02 22:29:32.000000000 -0500
-@@ -24,7 +24,6 @@
+--- a/drivers/net/wireless/ath5k/hw.c	2008-03-07 20:16:26.000000000 -0500
++++ b/drivers/net/wireless/ath5k/hw.c	2008-03-07 20:16:26.000000000 -0500
+@@ -385,7 +385,11 @@
+ 	/* reseting PCI on PCI-E cards results card to hang
+ 	 * and always return 0xffff... so we ingore that flag
+ 	 * for PCI-E cards */
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24))
++	bus_flags = (compat_is_pcie(pdev)) ? 0 : AR5K_RESET_CTL_PCI;
++#else
+ 	bus_flags = (pdev->is_pcie) ? 0 : AR5K_RESET_CTL_PCI;
++#endif
  
- obj-$(CONFIG_IWL3945)	+= iwlwifi/
- obj-$(CONFIG_IWL4965)	+= iwlwifi/
--obj-$(CONFIG_RT2X00)	+= rt2x00/
- 
- obj-$(CONFIG_P54_COMMON)	+= p54common.o
- obj-$(CONFIG_P54_USB)		+= p54usb.o
+ 	/* Reset chipset */
+ 	ret = ath5k_hw_nic_reset(ah, AR5K_RESET_CTL_PCU |
+@@ -935,7 +939,11 @@
+ 	 * TODO: Check out tx triger level, it's always 64 on dumps but I
+ 	 * guess we can tweak it and see how it goes ;-)
+ 	 */
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24))
++	dma_size = (compat_is_pcie(pdev)) ? AR5K_DMASIZE_128B : AR5K_DMASIZE_512B;
++#else
+ 	dma_size = (pdev->is_pcie) ? AR5K_DMASIZE_128B : AR5K_DMASIZE_512B;
++#endif
+ 	if (ah->ah_version != AR5K_AR5210) {
+ 		AR5K_REG_WRITE_BITS(ah, AR5K_TXCFG,
+ 			AR5K_TXCFG_SDMAMR, dma_size);
diff --git a/config.mk b/config.mk
index 3186241..a70d781 100644
--- a/config.mk
+++ b/config.mk
@@ -72,12 +72,17 @@
 CONFIG_RTL8180=m
 CONFIG_ADM8211=m
 
-ifneq ($(CONFIG_CRC_ITU_T),)
 CONFIG_RT2X00_LIB_PCI=m
 CONFIG_RT2400PCI=m
 CONFIG_RT2500PCI=m
-CONFIG_RT61PCI=m
 NEED_RT2X00=y
+
+# Two rt2x00 drivers require firmware: rt61pci and rt73usb. They depend on
+# CRC to check the firmware. We check here first for the PCI
+# driver as we're in the PCI section.
+ifneq ($(CONFIG_CRC_ITU_T),)
+CONFIG_RT61PCI=m
+NEED_RT2X00_FIRMWARE=y
 endif
 
 endif
@@ -106,22 +111,27 @@
 CONFIG_P54_USB=m
 CONFIG_RTL8187=m
 
-ifneq ($(CONFIG_CRC_ITU_T),)
-CONFIG_RT2X00_LIB_USB=m
+# RT2500USB does not require firmware
 CONFIG_RT2500USB=m
-CONFIG_RT73USB=m
 NEED_RT2X00=y
+# RT73USB requires firmware
+ifneq ($(CONFIG_CRC_ITU_T),)
+CONFIG_RT73USB=m
+NEED_RT2X00_FIRMWARE=y
 endif
 
-endif
+endif # end of USB driver list
 
-# rt2x00
+# Common rt2x00 requirements
 ifeq ($(NEED_RT2X00),y)
 CONFIG_RT2X00=m
 CONFIG_RT2X00_LIB=m
+endif
+
+ifeq ($(NEED_RT2X00_FIRMWARE),y)
 CONFIG_RT2X00_LIB_FIRMWARE=y
 # CONFIG_RT2X00_LIB_DEBUGFS is not set
-# CONFIG_RT2X00_DEBUG is not se
+# CONFIG_RT2X00_DEBUG is not set
 endif
 
 # p54