|
@@ -1794,7 +1794,7 @@ dma_sync:
|
|
|
**/
|
|
|
static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
|
|
|
struct ixgbe_ring *rx_ring,
|
|
|
- int budget)
|
|
|
+ const int budget)
|
|
|
{
|
|
|
unsigned int total_rx_bytes = 0, total_rx_packets = 0;
|
|
|
#ifdef IXGBE_FCOE
|
|
@@ -1845,7 +1845,6 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
|
|
|
|
|
|
/* probably a little skewed due to removing CRC */
|
|
|
total_rx_bytes += skb->len;
|
|
|
- total_rx_packets++;
|
|
|
|
|
|
/* populate checksum, timestamp, VLAN, and protocol */
|
|
|
ixgbe_process_skb_fields(rx_ring, rx_desc, skb);
|
|
@@ -1878,8 +1877,8 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
|
|
|
ixgbe_rx_skb(q_vector, skb);
|
|
|
|
|
|
/* update budget accounting */
|
|
|
- budget--;
|
|
|
- } while (likely(budget));
|
|
|
+ total_rx_packets++;
|
|
|
+ } while (likely(total_rx_packets < budget));
|
|
|
|
|
|
u64_stats_update_begin(&rx_ring->syncp);
|
|
|
rx_ring->stats.packets += total_rx_packets;
|
|
@@ -1891,7 +1890,7 @@ static bool ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
|
|
|
if (cleaned_count)
|
|
|
ixgbe_alloc_rx_buffers(rx_ring, cleaned_count);
|
|
|
|
|
|
- return !!budget;
|
|
|
+ return (total_rx_packets < budget);
|
|
|
}
|
|
|
|
|
|
/**
|