Don't blindly enable Rx lock-up workaround. Newer chips do not need

the Rx lock-up workaround.

Obtained from:	NetBSD
This commit is contained in:
yongari 2009-06-21 06:27:35 +00:00
parent 0e5575121c
commit b8c10ee72c
2 changed files with 9 additions and 1 deletions

View File

@ -500,6 +500,13 @@ fxp_attach(device_t dev)
sc->flags |= FXP_FLAG_WOLCAP;
}
/* Receiver lock-up workaround detection. */
fxp_read_eeprom(sc, &data, 3, 1);
if ((data & 0x03) != 0x03) {
sc->flags |= FXP_FLAG_RXBUG;
device_printf(dev, "Enabling Rx lock-up workaround\n");
}
/*
* Determine whether we must use the 503 serial interface.
*/
@ -2021,7 +2028,7 @@ fxp_tick(void *xsc)
if (sp->rx_good) {
ifp->if_ipackets += le32toh(sp->rx_good);
sc->rx_idle_secs = 0;
} else {
} else if (sc->flags & FXP_FLAG_RXBUG) {
/*
* Receiver's been idle for another second.
*/

View File

@ -204,6 +204,7 @@ struct fxp_softc {
#define FXP_FLAG_82559_RXCSUM 0x1000 /* 82559 compatible RX checksum */
#define FXP_FLAG_WOLCAP 0x2000 /* WOL capability */
#define FXP_FLAG_WOL 0x4000 /* WOL active */
#define FXP_FLAG_RXBUG 0x8000 /* Rx lock-up bug */
/* Macros to ease CSR access. */
#define CSR_READ_1(sc, reg) bus_read_1(sc->fxp_res[0], reg)