All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Buesch <mb@bu3sch.de>
To: John Linville <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org, bcm43xx-dev@lists.berlios.de
Subject: [patch 8/9] b43: Fix controller reset
Date: Tue, 14 Aug 2007 20:12:21 +0200	[thread overview]
Message-ID: <20070814181216.879252000@bu3sch.de> (raw)
In-Reply-To: 20070814181213.135874000@bu3sch.de

Don't check the device status. It's checked and handled later in
the workqueue. Use proper locking in the reset callback.

Signed-off-by: Michael Buesch <mb@bu3sch.de>

Index: wireless-dev-new/drivers/net/wireless/b43/main.c
===================================================================
--- wireless-dev-new.orig/drivers/net/wireless/b43/main.c	2007-08-13 17:44:34.000000000 +0200
+++ wireless-dev-new/drivers/net/wireless/b43/main.c	2007-08-13 18:13:13.000000000 +0200
@@ -2539,14 +2539,16 @@ static int b43_get_stats(struct ieee8021
 static int b43_dev_reset(struct ieee80211_hw *hw)
 {
 	struct b43_wl *wl = hw_to_b43_wl(hw);
-	struct b43_wldev *dev = wl->current_dev;
-	unsigned long flags;
+	struct b43_wldev *dev;
+	int err = -ENODEV;
 
-	if (!dev)
-		return -ENODEV;
-	spin_lock_irqsave(&wl->irq_lock, flags);
-	b43_controller_restart(dev, "Reset by ieee80211 subsystem");
-	spin_unlock_irqrestore(&wl->irq_lock, flags);
+	mutex_lock(&wl->mutex);
+	dev = wl->current_dev;
+	if (dev) {
+		b43_controller_restart(dev, "Reset by ieee80211 subsystem");
+		err = 0;
+	}
+	mutex_unlock(&wl->mutex);
 
 	return 0;
 }
@@ -3911,14 +3913,9 @@ static void b43_remove(struct ssb_device
 	}
 }
 
-/* Hard-reset the chip.
- * This can be called from interrupt or process context.
- * dev->irq_lock must be locked.
- */
+/* Perform a hardware reset. This can be called from any context. */
 void b43_controller_restart(struct b43_wldev *dev, const char *reason)
 {
-	if (b43_status(dev) != B43_STAT_INITIALIZED)
-		return;
 	bcminfo(dev->wl, "Controller RESET (%s) ...\n", reason);
 	queue_work(dev->wl->hw->workqueue, &dev->restart_work);
 }

-- 


  parent reply	other threads:[~2007-08-14 18:14 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-14 18:12 [patch 0/9] New patch series for merge Michael Buesch
2007-08-14 18:12 ` [patch 1/9] b43: Add more LO debugging Michael Buesch
2007-08-14 18:12 ` [patch 2/9] b43: Remove PCI to SSB bridge code Michael Buesch
2007-08-14 18:12 ` [patch 3/9] b43: Powerup the bus before accessing any MMIO Michael Buesch
2007-08-14 18:12 ` [patch 4/9] b43: Check init status in b43_config_interface Michael Buesch
2007-08-14 18:12 ` [patch 5/9] b43: Suppress sending of probe responses from firmware Michael Buesch
2007-08-14 18:12 ` [patch 6/9] b43: debugfs tx_status, Fix endless loop inside of spinlock Michael Buesch
2007-08-14 18:12 ` [patch 7/9] b43: Fix frame retry count for suppressed frames Michael Buesch
2007-08-14 18:12 ` Michael Buesch [this message]
2007-08-14 18:12 ` [patch 9/9] b43: Rewrite kconfig to get rid of the advice hack Michael Buesch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070814181216.879252000@bu3sch.de \
    --to=mb@bu3sch.de \
    --cc=bcm43xx-dev@lists.berlios.de \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.