[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
PR/30560 CVS commit: [netbsd-4-0] src/sys/dev/ic
The following reply was made to PR port-alpha/30560; it has been noted by GNATS.
From: Jeff Rizzo <riz%netbsd.org@localhost>
Subject: PR/30560 CVS commit: [netbsd-4-0] src/sys/dev/ic
Date: Sat, 2 Feb 2008 23:16:40 +0000 (UTC)
Module Name: src
Committed By: riz
Date: Sat Feb 2 23:16:40 UTC 2008
src/sys/dev/ic [netbsd-4-0]: i82557.c i82557reg.h i82557var.h
Pull up following revision(s) (requested by tsutsui in ticket #1028):
sys/dev/ic/i82557reg.h: revision 1.19
sys/dev/ic/i82557var.h: revision 1.36
sys/dev/ic/i82557.c: revision 1.105
Pull several fixes from OpenBSD's fxp.c:
use a nop with I bit set at the end of the tx chain. This avoids a race
between status update and clearing the suspend bit on machines which can't
write data smaller than 32bits at a time.
This should fix PR port-alpha/30560.
Fix nasty bug where driver would not correctly catch and handle an rnr
condition when it was due to the the recieve buffers being exhausted with
no packet transmits during that time. Symptom was that the fxp would
simply stop interrupting for the next 15 seconds until the watchdog kicked
in and reset the chip due to 15 seconds of inactivity, making the fxp very
poorly behaved when hammered on hard.
Defer reinitialisation of the RU until after the interrupt handler has had
a chance to process all pending packets, otherwise the chip may overwrite
their mbuf clusters after we have freed them.
Eliminates a race that can cause random pool corruption when reconfiguring
an interface under heavy network load.
And one more change for RX sanity:
- put RU into suspend when the last RFA is processed.
These RNR/RU changes may fix pool corruption problems on fxp.
Tested on AlphaPC164 and i386 with i82559 and i82550.
To generate a diff of this commit:
cvs rdiff -r1.100 -r184.108.40.206 src/sys/dev/ic/i82557.c
cvs rdiff -r1.18 -r220.127.116.11 src/sys/dev/ic/i82557reg.h
cvs rdiff -r1.35 -r18.104.22.168 src/sys/dev/ic/i82557var.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Main Index |
Thread Index |