* Re:[PATCH] eth0: Error -16 writing packet header to BAP
@ 2001-08-14 16:49 Jim Houston
0 siblings, 0 replies; only message in thread
From: Jim Houston @ 2001-08-14 16:49 UTC (permalink / raw)
To: brian, linux-kernel, hermes
Hi Brian,
I believe the patch which follows will fix your "Error -16..."
problem with the orinoco_cs driver.
I sent the patch to David Gibson a couple weeks of ago but have
not heard from him yet.
Jim Houston
--
Hi David,
The patch which follows "fixes" a problem I'm seeing with the
orinoco_cs wireless driver. The problem results in the error
"Error -110 writing packet header to BAP," and the connection locks up.
This happens almost immediately with the link active. I see this problem
with old "Wavelan Bronze" cards which the driver reports as "Firmware ID 1F
vendor 0x1 (Lucent) version 3.06." I'm assuming that the problem
is a feature of this old hardware/firmware.
The change is to some existing error handling (avoidance?) code
which retries if it detects an error setting a BAP offset. My change
also does this retry if the operation times out. I looked at the
wvlan_cs driver (which just works) to see if it had a similar
workaround. It doesn't.
--
Jim Houston
diff -urN -X /home/jim/dontdiff linux-2.4.7-orig/drivers/net/wireless/hermes.c linux-2.4.7/drivers/net/wireless/hermes.c
--- linux-2.4.7-orig/drivers/net/wireless/hermes.c Tue Jul 31 22:55:00 2001
+++ linux-2.4.7/drivers/net/wireless/hermes.c Tue Jul 31 22:34:09 2001
@@ -53,9 +53,9 @@
#include <stdarg.h>
#define DMSG(stuff...) do {printk(KERN_DEBUG "hermes @ 0x%x: " , hw->iobase); \
- printk(#stuff);} while (0)
+ printk(##stuff);} while (0)
-#define DEBUG(lvl, stuff...) if ( (lvl) <= HERMES_DEBUG) DMSG(#stuff)
+#define DEBUG(lvl, stuff...) if ( (lvl) <= HERMES_DEBUG) DMSG(##stuff)
#else /* ! HERMES_DEBUG */
@@ -330,20 +330,17 @@
reg = hermes_read_reg(hw, oreg);
}
- if (reg & HERMES_OFFSET_BUSY) {
- DEBUG(0,"hermes_bap_seek: returning ETIMEDOUT...\n");
- return -ETIMEDOUT;
- }
-
/* For some reason, seeking the BAP seems to randomly fail somewhere
(firmware bug?). We retry a few times before giving up. */
- if (reg & HERMES_OFFSET_ERR) {
- if (l--) {
- udelay(1);
- goto retry;
- } else
- return -EIO;
+ if ( (reg & (HERMES_OFFSET_BUSY | HERMES_OFFSET_ERR)) && l--) {
+ udelay(1);
+ goto retry;
}
+ if (reg & HERMES_OFFSET_BUSY)
+ return -ETIMEDOUT;
+
+ if (reg & HERMES_OFFSET_ERR)
+ return -EIO;
return 0;
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2001-08-14 18:27 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-08-14 16:49 Re:[PATCH] eth0: Error -16 writing packet header to BAP Jim Houston
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.