--- sys/dev/pci/if_de.c.orig	Wed Aug  6 14:08:06 2003
+++ sys/dev/pci/if_de.c	Sun Nov  2 22:44:43 2003
@@ -188,10 +188,13 @@
 static unsigned tulip_mii_readreg(tulip_softc_t * const sc, unsigned devaddr, unsigned regno);
 static void tulip_mii_writereg(tulip_softc_t * const sc, unsigned devaddr, unsigned regno, unsigned data);
 static int tulip_mii_map_abilities(tulip_softc_t * const sc, unsigned abilities);
 static tulip_media_t tulip_mii_phy_readspecific(tulip_softc_t * const sc);
 static int tulip_srom_decode(tulip_softc_t * const sc);
+#ifdef VIRTUAL_PC
+static void tulip_initring(tulip_softc_t * const sc, tulip_ringinfo_t * const ri, tulip_desc_t *descs, int ndescs);
+#endif
 #if defined(IFM_ETHER)
 static int tulip_ifmedia_change(struct ifnet * const ifp);
 static void tulip_ifmedia_status(struct ifnet * const ifp, struct ifmediareq *req);
 #endif
 /* static void tulip_21140_map_media(tulip_softc_t *sc); */
@@ -3850,10 +3853,17 @@
 		 */
 		sc->tulip_flags &= ~TULIP_RXIGNORE;
 		TULIP_CSR_WRITE(sc, csr_command, sc->tulip_cmdmode);
 	    }
 	}
+#ifdef VIRTUAL_PC
+	if (csr & TULIP_STS_TXINTR)
+		tulip_tx_intr(sc);
+	/* VirtualPC seems to spuriously set this bit. */
+	if (csr & TULIP_STS_TXSTOPPED)
+		csr &= ~(TULIP_STS_TXSTOPPED | TULIP_STS_ABNRMLINTR);
+#endif
 	if (csr & TULIP_STS_ABNRMLINTR) {
 	    u_int32_t tmp = csr & sc->tulip_intrmask
 		& ~(TULIP_STS_NORMALINTR|TULIP_STS_ABNRMLINTR);
 	    if (csr & TULIP_STS_TXUNDERFLOW) {
 #if defined(TULIP_DEBUG)
