MODULE_DESCRIPTION("RDC R6040 NAPI PCI FastEthernet driver");
 
 /* RX and TX interrupts that we handle */
-#define RX_INT                 (RX_FINISH)
-#define TX_INT                 (TX_FINISH)
-#define INT_MASK               (RX_INT | TX_INT)
+#define RX_INTS                        (RX_FIFO_FULL | RX_NO_DESC | RX_FINISH)
+#define TX_INTS                        (TX_FINISH)
+#define INT_MASK               (RX_INTS | TX_INTS)
 
 struct r6040_descriptor {
        u16     status, len;            /* 0-3 */
        if (work_done < budget) {
                netif_rx_complete(dev, napi);
                /* Enable RX interrupt */
-               iowrite16(ioread16(ioaddr + MIER) | RX_INT, ioaddr + MIER);
+               iowrite16(ioread16(ioaddr + MIER) | RX_INTS, ioaddr + MIER);
        }
        return work_done;
 }
                return IRQ_NONE;
 
        /* RX interrupt request */
-       if (status & 0x01) {
+       if (status & RX_INTS) {
+               if (status & RX_NO_DESC) {
+                       /* RX descriptor unavailable */
+                       dev->stats.rx_dropped++;
+                       dev->stats.rx_missed_errors++;
+               }
+               if (status & RX_FIFO_FULL)
+                       dev->stats.rx_fifo_errors++;
+
                /* Mask off RX interrupt */
-               iowrite16(ioread16(ioaddr + MIER) & ~RX_INT, ioaddr + MIER);
+               iowrite16(ioread16(ioaddr + MIER) & ~RX_INTS, ioaddr + MIER);
                netif_rx_schedule(dev, &lp->napi);
        }
 
        /* TX interrupt request */
-       if (status & 0x10)
+       if (status & TX_INTS)
                r6040_tx(dev);
 
        return IRQ_HANDLED;