lkml.org 
[lkml]   [2001]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[Fwd: Re:[PATCH] eth0: Error -16 writing packet header to BAP]

Hi Brian, David,

I figured out why my last patch didn't work. The tabs got
expanded to spaces because I did the old cut and paste.
Please forgive this newbie mistake.

Jim Houston

--

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;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 12:57    [W:0.021 / U:0.888 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site