|
@@ -1521,9 +1521,15 @@ fec_enet_rx(struct net_device *ndev, int budget)
|
|
|
struct fec_enet_private *fep = netdev_priv(ndev);
|
|
|
|
|
|
for_each_set_bit(queue_id, &fep->work_rx, FEC_ENET_MAX_RX_QS) {
|
|
|
- clear_bit(queue_id, &fep->work_rx);
|
|
|
- pkt_received += fec_enet_rx_queue(ndev,
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ ret = fec_enet_rx_queue(ndev,
|
|
|
budget - pkt_received, queue_id);
|
|
|
+
|
|
|
+ if (ret < budget - pkt_received)
|
|
|
+ clear_bit(queue_id, &fep->work_rx);
|
|
|
+
|
|
|
+ pkt_received += ret;
|
|
|
}
|
|
|
return pkt_received;
|
|
|
}
|