Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0000754c authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds
Browse files

[PATCH] "3c59x collision statistics fix" fix



The pre-2.6.16 patch "3c59x collision statistics fix" accidentally caused
vortex_error() to not run iowrite16(TxEnable, ioaddr + EL3_CMD) if we got a
maxCollisions interrupt but MAX_COLLISION_RESET is not set.

Thanks to Pete Clements <clem@clem.clem-digital.net> for reporting and testing.

Acked-by: default avatarSteffen Klassert <klassert@mathematik.tu-chemnitz.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 88b9adb0
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -2083,15 +2083,13 @@ vortex_error(struct net_device *dev, int status)
		}
		if (tx_status & 0x14)  vp->stats.tx_fifo_errors++;
		if (tx_status & 0x38)  vp->stats.tx_aborted_errors++;
		if (tx_status & 0x08)  vp->xstats.tx_max_collisions++;
		iowrite8(0, ioaddr + TxStatus);
		if (tx_status & 0x30) {			/* txJabber or txUnderrun */
			do_tx_reset = 1;
		} else if (tx_status & 0x08) {	/* maxCollisions */
			vp->xstats.tx_max_collisions++;
			if (vp->drv_flags & MAX_COLLISION_RESET) {
		} else if ((tx_status & 0x08) && (vp->drv_flags & MAX_COLLISION_RESET))  {	/* maxCollisions */
			do_tx_reset = 1;
			reset_mask = 0x0108;		/* Reset interface logic, but not download logic */
			}
		} else {				/* Merely re-enable the transmitter. */
			iowrite16(TxEnable, ioaddr + EL3_CMD);
		}