Skip to contentSkip to conversation

Please pull from "upstream" branch of rt2x00

PATCH Ivo van Doorn 1 participant 1 message Apr 12, 2007 Networking drivers (wireless)

lore
Share & tools
lore
#0 lore raw

Hi John,

This is quite fast after the previous pull request, but this fixes several important bugs where the most important 2 are the debugsfs fixes.

After these fedora bugs should be fixed.
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=233345
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=233434

Ivo

---

The following changes since commit fd349fec02854ab413d9aa47c732f892a13f83b6:
John W. Linville (1):

        Merge branch 'zd1211rw-week15' of git://git.kernel.org/.../mwu/mac80211-drivers

are found in the git repository at:

http://git.serialmonkey.com/rt2x00.git/ upstream

Ivo van Doorn (8):
rt2x00: Add new rt73 USB ID
rt2x00: Add new "invisible" config options for PCI and USB
rt2x00: Don't unregister unregistered interfaces
rt2x00: Create generic rt2x00lib_{enable,disable}_radio() function
rt2x00: rt2x00debug should be compiled into rt2x00lib Merge branch 'wireless-dev'
rt2x00: Fix debugfs register length handling
rt2x00: Fix crash during rmmod with debugfs enabled

 drivers/net/wireless/mac80211/rt2x00/Kconfig       |   15 +++++-
 drivers/net/wireless/mac80211/rt2x00/Makefile      |    5 +-
 drivers/net/wireless/mac80211/rt2x00/rt2400pci.c   |   59 ++++---------------
 drivers/net/wireless/mac80211/rt2x00/rt2400pci.h   |    6 --
 drivers/net/wireless/mac80211/rt2x00/rt2500pci.c   |   59 ++++---------------
 drivers/net/wireless/mac80211/rt2x00/rt2500pci.h   |    6 --
 drivers/net/wireless/mac80211/rt2x00/rt2500usb.c   |   58 ++++---------------
 drivers/net/wireless/mac80211/rt2x00/rt2500usb.h   |    6 --
 drivers/net/wireless/mac80211/rt2x00/rt2x00.h      |    5 +-
 drivers/net/wireless/mac80211/rt2x00/rt2x00debug.c |   46 +++------------
 drivers/net/wireless/mac80211/rt2x00/rt2x00debug.h |    5 +-
 drivers/net/wireless/mac80211/rt2x00/rt2x00dev.c   |   51 +++++++++++++++++
 drivers/net/wireless/mac80211/rt2x00/rt2x00lib.h   |    6 ++
 drivers/net/wireless/mac80211/rt2x00/rt2x00mac.c   |   12 ++--
 drivers/net/wireless/mac80211/rt2x00/rt61pci.c     |   55 ++++--------------
 drivers/net/wireless/mac80211/rt2x00/rt61pci.h     |    6 --
 drivers/net/wireless/mac80211/rt2x00/rt73usb.c     |   59 +++++---------------
 drivers/net/wireless/mac80211/rt2x00/rt73usb.h     |    6 --
 18 files changed, 163 insertions(+), 302 deletions(-)
drivers/net/wireless/mac80211/rt2x00/Kconfig +14 -1
index 31541ed..af67572 100644
@@ -15,6 +15,14 @@ config RT2X00_LIB
 	tristate
 	depends on RT2X00
 
+config RT2X00_LIB_PCI
+	tristate
+	depends on RT2X00
+
+config RT2X00_LIB_USB
+	tristate
+	depends on RT2X00
+
 config RT2X00_LIB_FIRMWARE
 	boolean
 	depends on RT2X00
@@ -23,6 +31,7 @@ config RT2400PCI
 	tristate "Ralink rt2400 pci/pcmcia support"
 	depends on RT2X00 && PCI
 	select RT2X00_LIB
+	select RT2X00_LIB_PCI
 	select EEPROM_93CX6
 	---help---
 	This is an experimental driver for the Ralink rt2400 wireless chip.
@@ -33,6 +42,7 @@ config RT2500PCI
 	tristate "Ralink rt2500 pci/pcmcia support"
 	depends on RT2X00 && PCI
 	select RT2X00_LIB
+	select RT2X00_LIB_PCI
 	select EEPROM_93CX6
 	---help---
 	This is an experimental driver for the Ralink rt2500 wireless chip.
@@ -43,6 +53,7 @@ config RT61PCI
 	tristate "Ralink rt61 pci/pcmcia support"
 	depends on RT2X00 && FW_LOADER && PCI
 	select RT2X00_LIB
+	select RT2X00_LIB_PCI
 	select RT2X00_LIB_FIRMWARE
 	select CRC_ITU_T
 	select EEPROM_93CX6
@@ -55,6 +66,7 @@ config RT2500USB
 	tristate "Ralink rt2500 usb support"
 	depends on RT2X00 && USB
 	select RT2X00_LIB
+	select RT2X00_LIB_USB
 	---help---
 	This is an experimental driver for the Ralink rt2500 wireless chip.
 
@@ -64,6 +76,7 @@ config RT73USB
 	tristate "Ralink rt73 usb support"
 	depends on RT2X00 && FW_LOADER && USB
 	select RT2X00_LIB
+	select RT2X00_LIB_USB
 	select RT2X00_LIB_FIRMWARE
 	select CRC_ITU_T
 	---help---
@@ -72,7 +85,7 @@ config RT73USB
 	When compiled as a module, this driver will be called "rt73usb.ko".
 
 config RT2X00_DEBUGFS
-	tristate "Ralink debugfs support"
+	bool "Ralink debugfs support"
 	depends on RT2X00 && RT2X00_LIB && MAC80211_DEBUGFS
 	---help---
 	Enable creation of debugfs files for the rt2x00 drivers.
drivers/net/wireless/mac80211/rt2x00/Makefile +4 -1
index 52f8b1e..f3a2cb1 100644
@@ -1,9 +1,12 @@
 rt2x00lib-objs := rt2x00dev.o rt2x00mac.o
 
+ifeq ($(CONFIG_RT2X00_DEBUGFS),y)
+	rt2x00lib-objs += rt2x00debug.o
+endif
+
 obj-$(CONFIG_RT2X00_LIB)	+= rt2x00lib.o
 obj-$(CONFIG_RT2400PCI)		+= rt2400pci.o
 obj-$(CONFIG_RT2500PCI)		+= rt2500pci.o
 obj-$(CONFIG_RT61PCI)		+= rt61pci.o
 obj-$(CONFIG_RT2500USB)		+= rt2500usb.o
 obj-$(CONFIG_RT73USB)		+= rt73usb.o
-obj-$(CONFIG_RT2X00_DEBUGFS)	+= rt2x00debug.o
drivers/net/wireless/mac80211/rt2x00/rt2400pci.c +13 -46

155 lines not on this page · raw message

drivers/net/wireless/mac80211/rt2x00/rt2400pci.h +0 -6
index 585c5aa..333b240 100644
@@ -916,12 +916,6 @@ static void rt2400pci_activity_led(struct rt2x00_dev *rt2x00dev,
 	char activity);
 
 /*
- * Radio control functions.
- */
-static int rt2400pci_enable_radio(struct rt2x00_dev *rt2x00dev);
-static void rt2400pci_disable_radio(struct rt2x00_dev *rt2x00dev);
-
-/*
  * Interrupt functions.
  */
 static void rt2400pci_rxdone(struct work_struct *work);
drivers/net/wireless/mac80211/rt2x00/rt2500pci.c +13 -46

155 lines not on this page · raw message

drivers/net/wireless/mac80211/rt2x00/rt2500pci.h +0 -6
index fd7cd1a..5c32b48 100644
@@ -1183,12 +1183,6 @@ static void rt2500pci_activity_led(struct rt2x00_dev *rt2x00dev,
 	char activity);
 
 /*
- * Radio control functions.
- */
-static int rt2500pci_enable_radio(struct rt2x00_dev *rt2x00dev);
-static void rt2500pci_disable_radio(struct rt2x00_dev *rt2x00dev);
-
-/*
  * Interrupt functions.
  */
 static void rt2500pci_rxdone(struct work_struct *work);
drivers/net/wireless/mac80211/rt2x00/rt2500usb.c +13 -45

144 lines not on this page · raw message

drivers/net/wireless/mac80211/rt2x00/rt2500usb.h +0 -6
index 287160c..c3e2d6b 100644
@@ -731,12 +731,6 @@ static void rt2500usb_enable_led(struct rt2x00_dev *rt2x00dev);
 static void rt2500usb_disable_led(struct rt2x00_dev *rt2x00dev);
 
 /*
- * Radio control functions.
- */
-static int rt2500usb_enable_radio(struct rt2x00_dev *rt2x00dev);
-static void rt2500usb_disable_radio(struct rt2x00_dev *rt2x00dev);
-
-/*
  * Interrupt functions.
  */
 static void rt2500usb_interrupt_beacondone(struct urb *urb);
drivers/net/wireless/mac80211/rt2x00/rt2x00.h +3 -2
index 38fae66..a0bb0ab 100644
@@ -809,9 +809,10 @@ struct rt2x00_dev {
 	void __iomem *csr_addr;
 
 	/*
-	 * If enabled, the structure for the debugfs files.
+	 * If enabled, the debugfs interface that should be
+	 * used for deregistration of debugfs.
 	 */
-	void *debugfs_data;
+	struct rt2x00debug_intf *debugfs_intf;
 
 	/*
 	 * Queue for deferred work.
drivers/net/wireless/mac80211/rt2x00/rt2x00debug.c +10 -36

89 lines not on this page · raw message

drivers/net/wireless/mac80211/rt2x00/rt2x00debug.h +3 -2
index ef8401d..6c98718 100644
@@ -31,6 +31,7 @@
 #include <net/wireless.h>
 
 struct rt2x00_dev;
+struct rt2x00debug_intf;
 
 typedef void (debug_access_t)(struct rt2x00_dev *rt2x00dev,
 	const unsigned long word, void *data);
@@ -40,7 +41,7 @@ struct rt2x00debug_reg {
 	debug_access_t *write;
 
 	unsigned int word_size;
-	unsigned int length;
+	unsigned int word_count;
 };
 
 struct rt2x00debug {
@@ -65,6 +66,6 @@ struct rt2x00debug {
 
 void *rt2x00debug_register(struct rt2x00debug *debug, struct wiphy *wiphy,
 	struct rt2x00_dev *rt2x00dev);
-void rt2x00debug_deregister(void *debugfs_data);
+void rt2x00debug_deregister(struct rt2x00debug_intf *intf);
 
 #endif /* RT2X00DEBUG_H */
drivers/net/wireless/mac80211/rt2x00/rt2x00dev.c +51 -0

57 lines not on this page · raw message

drivers/net/wireless/mac80211/rt2x00/rt2x00lib.h +6 -0
index 63fbef6..0a04255 100644
@@ -31,6 +31,12 @@
 #include <linux/firmware.h>
 
 /*
+ * Radio control handlers.
+ */
+int rt2x00lib_enable_radio(struct rt2x00_dev *rt2x00dev);
+void rt2x00lib_disable_radio(struct rt2x00_dev *rt2x00dev);
+
+/*
  * Firmware handlers.
  */
 #ifdef CONFIG_RT2X00_LIB_FIRMWARE
drivers/net/wireless/mac80211/rt2x00/rt2x00mac.c +6 -6
index eaf267a..569996d 100644
@@ -118,8 +118,8 @@ int rt2x00lib_reset(struct ieee80211_hw *hw)
 {
 	struct rt2x00_dev *rt2x00dev = hw->priv;
 
-	rt2x00dev->lib_ops->disable_radio(rt2x00dev);
-	return rt2x00dev->lib_ops->enable_radio(rt2x00dev);
+	rt2x00lib_disable_radio(rt2x00dev);
+	return rt2x00lib_enable_radio(rt2x00dev);
 }
 EXPORT_SYMBOL_GPL(rt2x00lib_reset);
 
@@ -172,7 +172,7 @@ int rt2x00lib_add_interface(struct ieee80211_hw *hw,
 		/*
 		 * Enable radio.
 		 */
-		status = rt2x00dev->lib_ops->enable_radio(rt2x00dev);
+		status = rt2x00lib_enable_radio(rt2x00dev);
 		if (status)
 			return status;
 	}
@@ -238,7 +238,7 @@ void rt2x00lib_remove_interface(struct ieee80211_hw *hw,
 	 */
 	if (!GET_FLAG(rt2x00dev, INTERFACE_INITIALIZED_MONITOR) &&
 	    !GET_FLAG(rt2x00dev, INTERFACE_INITIALIZED))
-		rt2x00dev->lib_ops->disable_radio(rt2x00dev);
+		rt2x00lib_disable_radio(rt2x00dev);
 
 	/*
 	 * Check if we still have 1 non-monitor or a monitor
@@ -275,7 +275,7 @@ int rt2x00lib_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf)
 	 */
 	if (GET_FLAG(rt2x00dev, DEVICE_ENABLED_RADIO)) {
 		if (!conf->radio_enabled)
-			rt2x00dev->lib_ops->disable_radio(rt2x00dev);
+			rt2x00lib_disable_radio(rt2x00dev);
 		else {
 			rt2x00dev->lib_ops->toggle_rx(rt2x00dev, 0);
 		}
@@ -297,7 +297,7 @@ int rt2x00lib_config(struct ieee80211_hw *hw, struct ieee80211_conf *conf)
 	if (GET_FLAG(rt2x00dev, DEVICE_ENABLED_RADIO)) {
 		rt2x00dev->lib_ops->toggle_rx(rt2x00dev, 1);
 	} else if (conf->radio_enabled)
-		return rt2x00dev->lib_ops->enable_radio(rt2x00dev);
+		return rt2x00lib_enable_radio(rt2x00dev);
 
 	return 0;
 }
drivers/net/wireless/mac80211/rt2x00/rt61pci.c +13 -42

154 lines not on this page · raw message

drivers/net/wireless/mac80211/rt2x00/rt61pci.h +0 -6
index 4c97ba8..44de73f 100644
@@ -1346,12 +1346,6 @@ static void rt61pci_disable_led(struct rt2x00_dev *rt2x00dev);
 static void rt61pci_activity_led(struct rt2x00_dev *rt2x00dev, char rssi);
 
 /*
- * Radio control functions.
- */
-static int rt61pci_enable_radio(struct rt2x00_dev *rt2x00dev);
-static void rt61pci_disable_radio(struct rt2x00_dev *rt2x00dev);
-
-/*
  * Interrupt functions.
  */
 static void rt61pci_rxdone(struct work_struct *work);
drivers/net/wireless/mac80211/rt2x00/rt73usb.c +14 -45

151 lines not on this page · raw message

drivers/net/wireless/mac80211/rt2x00/rt73usb.h +0 -6
index 7394185..8f9abb0 100644
@@ -930,12 +930,6 @@ static void rt73usb_disable_led(struct rt2x00_dev *rt2x00dev);
 static void rt73usb_activity_led(struct rt2x00_dev *rt2x00dev, char rssi);
 
 /*
- * Radio control functions.
- */
-static int rt73usb_enable_radio(struct rt2x00_dev *rt2x00dev);
-static void rt73usb_disable_radio(struct rt2x00_dev *rt2x00dev);
-
-/*
  * Interrupt functions.
  */
 static void rt73usb_interrupt_beacondone(struct urb *urb);