From: David Gibson <hermes-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
To: Jeff Garzik <jgarzik-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>,
Pavel Roskin <proski-mXXj517/zsQ@public.gmane.org>,
Orinoco Development List
<orinoco-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
netdev-VZNHf3L845pBDgjK7y7TUQ@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.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-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
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-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
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
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
next prev parent reply other threads:[~2005-02-24 3:58 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
[not found] ` <20050224035445.GB32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2005-02-24 3:55 ` [2/14] Orinoco driver updates - update printk()s David Gibson
[not found] ` <20050224035524.GC32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2005-02-24 3:56 ` [3/14] Orinoco driver updates - use mdelay()/ssleep() more David Gibson
[not found] ` <20050224035650.GD32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2005-02-24 3:57 ` [4/14] Orinoco driver updates - add free_orinocodev() David Gibson
[not found] ` <20050224035718.GE32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2005-02-24 3:58 ` David Gibson [this message]
[not found] ` <20050224035804.GF32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2005-02-24 3:59 ` [6/14] Orinoco driver updates - cleanup PCI initialization David Gibson
[not found] ` <20050224035957.GH32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2005-02-24 4:00 ` [7/14] Orinoco driver updates - use modern module_parm() David Gibson
[not found] ` <20050224040024.GI32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2005-02-24 4:00 ` [8/14] Orinoco driver updates - PCMCIA initialization cleanups David Gibson
[not found] ` <20050224040052.GJ32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2005-02-24 4:01 ` [9/14] Orinoco driver updates - update is_ethersnap() David Gibson
[not found] ` <20050224040153.GK32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2005-02-24 4:02 ` [10/14] Orinoco driver updates - prohibit IBSS with no ESSID David Gibson
[not found] ` <20050224040228.GL32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2005-02-24 4:02 ` [11/14] Orinoco driver updates - delay Tx wake David Gibson
[not found] ` <20050224040258.GM32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2005-02-24 4:03 ` [12/14] Orinoco driver updates - WEP updates David Gibson
[not found] ` <20050224040319.GN32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2005-02-24 4:04 ` [13/14] Orinoco driver updates - update firmware detection David Gibson
[not found] ` <20050224040409.GO32001-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
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-xt8fgy+axnrb3ne2bgzf6laj5h9x9tb+@public.gmane.org \
--cc=jgarzik-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=netdev-VZNHf3L845pBDgjK7y7TUQ@public.gmane.org \
--cc=orinoco-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=proski-mXXj517/zsQ@public.gmane.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;
as well as URLs for NNTP newsgroup(s).