Subject: Re: kern/10707: "transmit aborted" errors from vr driver
To: Martin Husemann <martin@rumolt.teuto.de>
From: Manuel Bouyer <bouyer@antioche.lip6.fr>
List: current-users
Date: 08/01/2000 23:43:05
On Tue, Aug 01, 2000 at 11:02:30PM +0200, Martin Husemann wrote:
> I'll need a little ethernet-driver-guru advise, please.
> 
> I filed a PR (kern/10707) a few days ago (which may be a dup of a slightly
> different PR, kern/7948). There were speculations of this all being a
> hardware bug. So I tried to find out, but now I'm not sure...
> 
> I augmented sys/dev/pci/if_vr.c with debug output on the following theory:
> 
> The driver logs this error message, when the interrupt status register
> indicates a transmit abort error.
> 
> IMHO there should be at least one TX descriptor, that has the coresponding
> VR_TXSTAT_ABRT bit set. So I added code to print another error when this
> descriptor is found (which should happen right after printing the first
> error in vr_txeof). There are checks for other error conditions at that
> place already, guarded by the appropriate if (txstat & VR_TXSTAT_ERRSUM),
> and I simply added a few lines there:
> 
> 			if (txstat & VR_TXSTAT_LATECOLL)
> 				ifp->if_collisions++;
> +			if (txstat & VR_TXSTAT_ABRT)
> +				printf("%s: TSR1 has TXSTAT_ABRT\n",
> +					sc->vr_dev.dv_xname);
> 
> With this additional code, I do still get the "vr0: transmit aborted" messages,
> but I never got the "TSR1 has TXSTAT_ABRT" message.
> 
> This either indicates my fundamental misunderstanding of the chip, or a
> flaw in the chip (unsolicited setting of the error bit). In the later case
> we should move the diagnostic message to the place where I added my test
> printf and ignore the interrupt status bit completely (or make vr_txeof return
> a value indicating whether we need to retransmit that packet or not).

To my knowledge it's useless to retransmit the packet - it'll trigger the
bug again.

--
Manuel Bouyer <bouyer@antioche.eu.org>
--