|
@@ -1089,7 +1089,7 @@ static void ixgbe_tx_timeout_reset(struct ixgbe_adapter *adapter)
|
|
|
* @tx_ring: tx ring to clean
|
|
|
**/
|
|
|
static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector,
|
|
|
- struct ixgbe_ring *tx_ring)
|
|
|
+ struct ixgbe_ring *tx_ring, int napi_budget)
|
|
|
{
|
|
|
struct ixgbe_adapter *adapter = q_vector->adapter;
|
|
|
struct ixgbe_tx_buffer *tx_buffer;
|
|
@@ -1127,7 +1127,7 @@ static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector,
|
|
|
total_packets += tx_buffer->gso_segs;
|
|
|
|
|
|
/* free the skb */
|
|
|
- dev_consume_skb_any(tx_buffer->skb);
|
|
|
+ napi_consume_skb(tx_buffer->skb, napi_budget);
|
|
|
|
|
|
/* unmap skb header data */
|
|
|
dma_unmap_single(tx_ring->dev,
|
|
@@ -2784,7 +2784,7 @@ int ixgbe_poll(struct napi_struct *napi, int budget)
|
|
|
#endif
|
|
|
|
|
|
ixgbe_for_each_ring(ring, q_vector->tx)
|
|
|
- clean_complete &= !!ixgbe_clean_tx_irq(q_vector, ring);
|
|
|
+ clean_complete &= !!ixgbe_clean_tx_irq(q_vector, ring, budget);
|
|
|
|
|
|
/* Exit if we are called by netpoll or busy polling is active */
|
|
|
if ((budget <= 0) || !ixgbe_qv_lock_napi(q_vector))
|