--- if_sis.c.orig Fri Oct 19 16:07:23 2007 +++ if_sis.c Fri Oct 19 16:06:17 2007 @@ -1431,6 +1431,11 @@ cur_rx->sis_mbuf = NULL; total_len = SIS_RXBYTES(cur_rx); + if(rxstat & SIS_RXSTAT_GIANT) { + rxstat &= (~ ((u_int32_t) SIS_RXSTAT_GIANT) ); + rxstat |= SIS_CMDSTS_PKT_OK; + } + /* * If an error occurs, update stats, clear the * status word and leave the mbuf cluster in place: @@ -1610,7 +1615,7 @@ /* Reading the ISR register clears all interrupts. */ status = CSR_READ_4(sc, SIS_ISR); - if (status & (SIS_ISR_RX_ERR|SIS_ISR_RX_OFLOW)) + if (status & (SIS_ISR_RX_OFLOW)) sis_rxeoc(sc); if (status & (SIS_ISR_RX_IDLE)) @@ -1666,7 +1671,7 @@ if (status & (SIS_ISR_RX_DESC_OK|SIS_ISR_RX_OK|SIS_ISR_RX_IDLE)) sis_rxeof(sc); - if (status & (SIS_ISR_RX_ERR | SIS_ISR_RX_OFLOW)) + if (status & (SIS_ISR_RX_OFLOW)) sis_rxeoc(sc); if (status & (SIS_ISR_RX_IDLE))