]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
r8169: RX fifo overflow recovery
authorFrancois Romieu <romieu@fr.zoreil.com>
Sun, 14 May 2006 10:31:17 +0000 (12:31 +0200)
committerFrancois Romieu <romieu@electric-eye.fr.zoreil.com>
Wed, 26 Jul 2006 21:23:13 +0000 (23:23 +0200)
Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
drivers/net/r8169.c

index e8786c4fcac2f367bc5bde4d61240d942d26a0c1..ea4f9f7bd071d84ce866248b0a612d1c8d378bbc 100644 (file)
@@ -257,10 +257,11 @@ enum RTL8169_register_content {
        RxOK = 0x01,
 
        /* RxStatusDesc */
-       RxRES = 0x00200000,
-       RxCRC = 0x00080000,
-       RxRUNT = 0x00100000,
-       RxRWT = 0x00400000,
+       RxFOVF  = (1 << 23),
+       RxRWT   = (1 << 22),
+       RxRES   = (1 << 21),
+       RxRUNT  = (1 << 20),
+       RxCRC   = (1 << 19),
 
        /* ChipCmdBits */
        CmdReset = 0x10,
@@ -2465,6 +2466,10 @@ rtl8169_rx_interrupt(struct net_device *dev, struct rtl8169_private *tp,
                                tp->stats.rx_length_errors++;
                        if (status & RxCRC)
                                tp->stats.rx_crc_errors++;
+                       if (status & RxFOVF) {
+                               rtl8169_schedule_work(dev, rtl8169_reset_task);
+                               tp->stats.rx_fifo_errors++;
+                       }
                        rtl8169_mark_to_asic(desc, tp->rx_buf_sz);
                } else {
                        struct sk_buff *skb = tp->Rx_skbuff[entry];