From: "Maciej W. Rozycki" <macro@xxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxx> Looks good to me, applied.