]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/mv643xx_eth.c
mv643xx_eth: fix NAPI 'rotting packet' issue
[linux-2.6-omap-h63xx.git] / drivers / net / mv643xx_eth.c
index 46819af3b0627aec89649245ded32ccf53c7e028..af279f26c4070cbf883fb3b2b39ca89172236830 100644 (file)
@@ -650,8 +650,6 @@ static int mv643xx_eth_poll(struct napi_struct *napi, int budget)
 
        if (rx < budget) {
                netif_rx_complete(mp->dev, napi);
-               wrl(mp, INT_CAUSE(mp->port_num), 0);
-               wrl(mp, INT_CAUSE_EXT(mp->port_num), 0);
                wrl(mp, INT_MASK(mp->port_num), INT_TX_END | INT_RX | INT_EXT);
        }
 
@@ -1796,6 +1794,7 @@ static irqreturn_t mv643xx_eth_irq(int irq, void *dev_id)
         */
 #ifdef MV643XX_ETH_NAPI
        if (int_cause & INT_RX) {
+               wrl(mp, INT_CAUSE(mp->port_num), ~(int_cause & INT_RX));
                wrl(mp, INT_MASK(mp->port_num), 0x00000000);
                rdl(mp, INT_MASK(mp->port_num));