diff options
Diffstat (limited to 'drivers/net/ethernet/freescale/fec_main.c')
-rw-r--r-- | drivers/net/ethernet/freescale/fec_main.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index bfa10c3da35f..c9f77c324535 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c | |||
@@ -1521,9 +1521,15 @@ fec_enet_rx(struct net_device *ndev, int budget) | |||
1521 | struct fec_enet_private *fep = netdev_priv(ndev); | 1521 | struct fec_enet_private *fep = netdev_priv(ndev); |
1522 | 1522 | ||
1523 | for_each_set_bit(queue_id, &fep->work_rx, FEC_ENET_MAX_RX_QS) { | 1523 | for_each_set_bit(queue_id, &fep->work_rx, FEC_ENET_MAX_RX_QS) { |
1524 | clear_bit(queue_id, &fep->work_rx); | 1524 | int ret; |
1525 | pkt_received += fec_enet_rx_queue(ndev, | 1525 | |
1526 | ret = fec_enet_rx_queue(ndev, | ||
1526 | budget - pkt_received, queue_id); | 1527 | budget - pkt_received, queue_id); |
1528 | |||
1529 | if (ret < budget - pkt_received) | ||
1530 | clear_bit(queue_id, &fep->work_rx); | ||
1531 | |||
1532 | pkt_received += ret; | ||
1527 | } | 1533 | } |
1528 | return pkt_received; | 1534 | return pkt_received; |
1529 | } | 1535 | } |