kernels/linux-2.4.0/drivers/net/epic100.c
/* Reset the chip to recover from a PCI transaction error.
   This may occur at interrupt time. */
Reset the chip to recover from a PCI transaction error.
This may occur at interrupt time.
Reset the chip to recover from a PCI transaction error . This may occur at interrupt time .
static void epic_pause(struct net_device *dev)
{
	long ioaddr = dev->base_addr;
	struct epic_private *ep = (struct epic_private *)dev->priv;
	netif_stop_queue (dev);
	outl(0x00000000, ioaddr + INTMASK);
	outw(StopRx | StopTxDMA | StopRxDMA, ioaddr + COMMAND);
	if (inw(ioaddr + COMMAND) != 0xffff) {
		ep->stats.rx_missed_errors += inb(ioaddr + MPCNT);
		ep->stats.rx_frame_errors += inb(ioaddr + ALICNT);
		ep->stats.rx_crc_errors += inb(ioaddr + CRCCNT);
	}
	epic_rx(dev);
}
static void epic_pause ( struct net_device * dev ) { long ioaddr = dev -> base_addr ; struct epic_private * ep = ( struct epic_private * ) dev -> priv ; netif_stop_queue ( dev ) ; outl ( 0x00000000 , ioaddr + INTMASK ) ; outw ( StopRx | StopTxDMA | StopRxDMA , ioaddr + COMMAND ) ; if ( inw ( ioaddr + COMMAND ) != 0xffff ) { ep -> stats . rx_missed_errors += inb ( ioaddr + MPCNT ) ; ep -> stats . rx_frame_errors += inb ( ioaddr + ALICNT ) ; ep -> stats . rx_crc_errors += inb ( ioaddr + CRCCNT ) ; } epic_rx ( dev ) ; }
Reset the chip to recover from a PCI transaction error.
Reset the chip to recover from a PCI transaction error .
/* Disable interrupts by clearing the interrupt mask. */ /* Stop the chip's Tx and Rx DMA processes. */ /* Update the error counts. */ /* Remove the packets on the Rx queue. */