Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/sys/dev/ic



Module Name:    src
Committed By:   tsutsui
Date:           Sat Dec  8 15:45:43 UTC 2007

Modified Files:
        src/sys/dev/ic: i82557.c i82557reg.h i82557var.h

Log Message:
Pull several fixes from OpenBSD's fxp.c:

Rev 1.41:
> 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.

Rev 1.50:
> 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.

Rev 1.61:
> 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.104 -r1.105 src/sys/dev/ic/i82557.c
cvs rdiff -r1.18 -r1.19 src/sys/dev/ic/i82557reg.h
cvs rdiff -r1.35 -r1.36 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.




Home | Main Index | Thread Index | Old Index