[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: Steffen Klassert <klassert@mathematik.tu-chemnitz.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
88b9adb073
commit
0000754c27
1 changed files with 5 additions and 7 deletions
|
@ -2083,16 +2083,14 @@ 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) {
|
||||
do_tx_reset = 1;
|
||||
reset_mask = 0x0108; /* Reset interface logic, but not download logic */
|
||||
}
|
||||
} else { /* Merely re-enable the transmitter. */
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue