lkml.org 
[lkml]   [2001]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Date
SubjectRe: xirc2ps_cs driver timeouts/errors
I downloaded the pcmcia-cs 3.1.24 package and hand-merged the bugfix(es?)
into 2.4.1's xirc2ps_cs.c. A(n attempt at a) patch to bring 2.4.1
up to pcmcia-cs's version is attached to this email. So far, no
problems, but it'll be at least 48 hours before I can say whether
it happens or not.. This is also available at
http://incandescent.mp3revolution.net/kernel/xirc2ps_cs/.


Looking through logs, it appears as though the problem first
appeared in kernel 2.4.1-pre7, and has become frequent enough
to annoy me as of 2.4.1. Did anything change dealing w/ this
driver/card between 2.4.0 and 2.4.1-pre7?



On Fri, Feb 02, 2001 at 09:20:40PM -0800, David Hinds wrote:
>
> On Fri, Feb 02, 2001 at 11:54:31PM -0500, dilinger@mp3revolution.net wrote:
> >
> > Each time I get a transmit timeout, or UDP: short packet error,
> > networking on my laptop seems to go down. Reinsertion of the
> > card temporarily fixes it, and if I leave it long enough it
> > also fixes itself.
>
> Does the same happen with a 2.2 kernel and the 3.1.24 PCMCIA drivers?
> There is a bug fix in the 3.1.24 xirc2ps_cs driver that hasn't been
> merged into the kernel tree yet.
>
> -- Dave

--
"... being a Linux user is sort of like living in a house inhabited
by a large family of carpenters and architects. Every morning when
you wake up, the house is a little different. Maybe there is a new
turret, or some walls have moved. Or perhaps someone has temporarily
removed the floor under your bed." - Unix for Dummies, 2nd Edition
-- found in the .sig of Rob Riggs, rriggs@tesser.com
diff -urN linux.old/drivers/net/pcmcia/xirc2ps_cs.c linux/drivers/net/pcmcia/xirc2ps_cs.c
--- linux.old/drivers/net/pcmcia/xirc2ps_cs.c Thu Oct 26 19:52:16 2000
+++ linux/drivers/net/pcmcia/xirc2ps_cs.c Sat Feb 3 01:15:49 2001
@@ -382,6 +382,7 @@
static void do_powerdown(struct net_device *dev);
static int do_stop(struct net_device *dev);

+
/*=============== Helper functions =========================*/
static void
flush_stale_links(void)
@@ -1348,7 +1349,6 @@
* packets */
lp->stats.rx_dropped++;
DEBUG(2, "%s: RX drop, too much done\n", dev->name);
- PutWord(XIRCREG0_DO, 0x8000); /* issue cmd: skip_rx_packet */
} else if (rsr & PktRxOk) {
struct sk_buff *skb;

@@ -1423,8 +1423,7 @@
if (!(rsr & PhyPkt))
lp->stats.multicast++;
}
- PutWord(XIRCREG0_DO, 0x8000); /* issue cmd: skip_rx_packet */
- } else {
+ } else { /* bad packet */
DEBUG(5, "rsr=%#02x\n", rsr);
}
if (rsr & PktTooLong) {
@@ -1439,6 +1438,9 @@
lp->stats.rx_fifo_errors++; /* okay ? */
DEBUG(3, "%s: Alignment error\n", dev->name);
}
+
+ /* clear the received/dropped/error packet */
+ PutWord(XIRCREG0_DO, 0x8000); /* issue cmd: skip_rx_packet */

/* get the new ethernet status */
eth_status = GetByte(XIRCREG_ESR);
\
 
 \ /
  Last update: 2005-03-22 13:17    [W:0.053 / U:4.572 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site