From: "Maciej W. Rozycki" <macro@linux-mips.org>
Date: Mon, 8 Jun 2009 02:47:05 +0100 (WEST)
> A driver overhaul on 29 Feb 2000 (!) broke locking around fiddling with
> the tx descriptor ring in start_xmit(); a follow-on "fix" removed the
> broken remnants altogether. Here's a patch to restore proper locking in
> the function -- the complement in the interrupt handler has been correct
> all the time.
>
> This *may* have been the reason for the occasional confusion of the chip
> -- triggering a tx timeout followed by a chip reset sequence -- seen on
> R4k-based DECstations with the onboard Ethernet interface. Another theory
> is the confusion is due to an unindentified problem -- perhaps a silicon
> erratum -- associated with the variation of the MT ASIC used to interface
> the R4k CPU to the rest of the system on these computers; with its
> aggressive write-back buffering the design is particularly weakly ordered
> when it comes to MMIO (in the absence of ordering barriers uncached reads
> are allowed to bypass earlier uncached writes, even if to the same
> location), which may trigger all kinds of corner cases in peripheral
> hardware as well as software.
>
> Either way this piece of code is buggy.
>
> Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Looks good to me, applied.
|