cns3xxx: fix a ethernet driver napi poll handling bug
authorFelix Fietkau <nbd@openwrt.org>
Mon, 18 Jan 2016 22:38:14 +0000 (22:38 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 18 Jan 2016 22:38:14 +0000 (22:38 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 48333

target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c

index e85e1bef9feba74aeb515a14457504701ae6c260..74a3ca09053dcd6ca5471d24bca6b194155c2462 100644 (file)
@@ -717,6 +717,7 @@ static int eth_poll(struct napi_struct *napi, int budget)
        if (!received) {
                napi_complete(napi);
                enable_irq(sw->rx_irq);
+               budget = 0;
 
                /* if rx descriptors are full schedule another poll */
                if (rx_ring->desc[(i-1) & (RX_DESCS-1)].cown)
@@ -732,7 +733,7 @@ static int eth_poll(struct napi_struct *napi, int budget)
        wmb();
        enable_rx_dma(sw);
 
-       return received;
+       return budget;
 }
 
 static void eth_set_desc(struct sw *sw, struct _tx_ring *tx_ring, int index,