public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <hermes@gibson.dropbear.id.au>
To: Jeff Garzik <jgarzik@pobox.com>, Pavel Roskin <proski@gnu.org>,
	Orinoco Development List <orinoco-devel@lists.sourceforge.net>,
	netdev@oss.sgi.com, linux-kernel@vger.kernel.org
Subject: [5/14] Orinoco driver updates - cleanup low-level code
Date: Thu, 24 Feb 2005 14:58:04 +1100	[thread overview]
Message-ID: <20050224035804.GF32001@localhost.localdomain> (raw)
In-Reply-To: <20050224035718.GE32001@localhost.localdomain>

Apply some cleanups to the low-level orinoco handling code in
hermes.[ch].  This cleans up some error handling code, corrects an
error code to something more accurate, and also increases a timeout
value.  This last can (when the hardware plays up) cause long delays
with spinlocks held, which is bad, but is rather less prone to
prematurely giving up, which has the unfortunate habit of fatally
confusing the hardware in other ways :-/.

Signed-off-by: David Gibson <hermes@gibson.dropbear.id.au>

Index: working-2.6/drivers/net/wireless/hermes.c
===================================================================
--- working-2.6.orig/drivers/net/wireless/hermes.c	2005-01-12 15:22:34.263633584 +1100
+++ working-2.6/drivers/net/wireless/hermes.c	2004-11-05 13:59:07.000000000 +1100
@@ -383,12 +383,17 @@
 		reg = hermes_read_reg(hw, oreg);
 	}
 
-	if (reg & HERMES_OFFSET_BUSY) {
-		return -ETIMEDOUT;
-	}
+	if (reg != offset) {
+		printk(KERN_ERR "hermes @ %p: BAP%d offset %s: "
+		       "reg=0x%x id=0x%x offset=0x%x\n", hw->iobase, bap,
+		       (reg & HERMES_OFFSET_BUSY) ? "timeout" : "error",
+		       reg, id, offset);
+
+		if (reg & HERMES_OFFSET_BUSY) {
+			return -ETIMEDOUT;
+		}
 
-	if (reg & HERMES_OFFSET_ERR) {
-		return -EIO;
+		return -EIO;		/* error or wrong offset */
 	}
 
 	return 0;
@@ -476,7 +481,7 @@
 	rlength = hermes_read_reg(hw, dreg);
 
 	if (! rlength)
-		return -ENOENT;
+		return -ENODATA;
 
 	rtype = hermes_read_reg(hw, dreg);
 
Index: working-2.6/drivers/net/wireless/hermes.h
===================================================================
--- working-2.6.orig/drivers/net/wireless/hermes.h	2005-01-12 11:13:41.000000000 +1100
+++ working-2.6/drivers/net/wireless/hermes.h	2004-11-05 13:53:55.000000000 +1100
@@ -340,7 +340,7 @@
 #ifdef __KERNEL__
 
 /* Timeouts */
-#define HERMES_BAP_BUSY_TIMEOUT (500) /* In iterations of ~1us */
+#define HERMES_BAP_BUSY_TIMEOUT (10000) /* In iterations of ~1us */
 
 /* Basic control structure */
 typedef struct hermes {

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist.  NOT _the_ _other_ _way_
				| _around_!
http://www.ozlabs.org/people/dgibson

  reply	other threads:[~2005-02-24  4:43 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-02-24  3:53 [0/14] Orinoco driver updates David Gibson
2005-02-24  3:54 ` [1/14] Orinoco driver updates - use netif_carrier_*() David Gibson
2005-02-24  3:55   ` [2/14] Orinoco driver updates - update printk()s David Gibson
2005-02-24  3:56     ` [3/14] Orinoco driver updates - use mdelay()/ssleep() more David Gibson
2005-02-24  3:57       ` [4/14] Orinoco driver updates - add free_orinocodev() David Gibson
2005-02-24  3:58         ` David Gibson [this message]
2005-02-24  3:59           ` [6/14] Orinoco driver updates - cleanup PCI initialization David Gibson
2005-02-24  4:00             ` [7/14] Orinoco driver updates - use modern module_parm() David Gibson
2005-02-24  4:00               ` [8/14] Orinoco driver updates - PCMCIA initialization cleanups David Gibson
2005-02-24  4:01                 ` [9/14] Orinoco driver updates - update is_ethersnap() David Gibson
2005-02-24  4:02                   ` [10/14] Orinoco driver updates - prohibit IBSS with no ESSID David Gibson
2005-02-24  4:02                     ` [11/14] Orinoco driver updates - delay Tx wake David Gibson
2005-02-24  4:03                       ` [12/14] Orinoco driver updates - WEP updates David Gibson
2005-02-24  4:04                         ` [13/14] Orinoco driver updates - update firmware detection David Gibson
2005-02-24  4:05                           ` [14/14] Orinoco driver updates - update version and changelog David Gibson
2005-02-24  4:44                             ` Jeff Garzik
2005-02-24  6:55                 ` [8/14] Orinoco driver updates - PCMCIA initialization cleanups Dominik Brodowski
2005-02-24  7:29                   ` Jeff Garzik
2005-02-25  5:03                     ` [Orinoco-devel] " David Gibson
2005-02-25  7:02                       ` Dominik Brodowski
2005-02-24  4:35               ` [7/14] Orinoco driver updates - use modern module_parm() Jeff Garzik
2005-02-24  4:35             ` [6/14] Orinoco driver updates - cleanup PCI initialization Jeff Garzik
2005-02-25  4:58               ` [Orinoco-devel] " David Gibson

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=20050224035804.GF32001@localhost.localdomain \
    --to=hermes@gibson.dropbear.id.au \
    --cc=jgarzik@pobox.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@oss.sgi.com \
    --cc=orinoco-devel@lists.sourceforge.net \
    --cc=proski@gnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox