/* No matter what, we disable RX, process, and the restart RX.  */
static void sa1100_irda_fir_irq(struct net_device *dev)
/* No matter what, we disable RX, process, and the restart RX.  */
static void sa1100_irda_fir_irq(struct net_device *dev)
{
	struct sa1100_irda *si = netdev_priv(dev);
	sa1100_stop_dma(si->rxdma);
	if (Ser2HSSR0 & (HSSR0_FRE | HSSR0_RAB)) {
		dev->stats.rx_errors++;
		if (Ser2HSSR0 & HSSR0_FRE)
			dev->stats.rx_frame_errors++;
		Ser2HSCR0 = si->hscr0 | HSCR0_HSSP;
		Ser2HSSR0 = HSSR0_FRE | HSSR0_RAB;
	}
	if (Ser2HSSR0 & HSSR0_EIF)
		sa1100_irda_fir_error(si, dev);
	sa1100_irda_rx_dma_start(si);
}