diff options
Diffstat (limited to 'drivers/net/ethernet/intel/e1000/e1000_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/e1000/e1000_main.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c index 669060a2e6aa..3f5feb55cfba 100644 --- a/drivers/net/ethernet/intel/e1000/e1000_main.c +++ b/drivers/net/ethernet/intel/e1000/e1000_main.c @@ -1953,7 +1953,8 @@ void e1000_free_all_tx_resources(struct e1000_adapter *adapter)  static void  e1000_unmap_and_free_tx_resource(struct e1000_adapter *adapter, -				 struct e1000_tx_buffer *buffer_info) +				 struct e1000_tx_buffer *buffer_info, +				 int budget)  {  	if (buffer_info->dma) {  		if (buffer_info->mapped_as_page) @@ -1966,7 +1967,7 @@ e1000_unmap_and_free_tx_resource(struct e1000_adapter *adapter,  		buffer_info->dma = 0;  	}  	if (buffer_info->skb) { -		dev_kfree_skb_any(buffer_info->skb); +		napi_consume_skb(buffer_info->skb, budget);  		buffer_info->skb = NULL;  	}  	buffer_info->time_stamp = 0; @@ -1990,7 +1991,7 @@ static void e1000_clean_tx_ring(struct e1000_adapter *adapter,  	for (i = 0; i < tx_ring->count; i++) {  		buffer_info = &tx_ring->buffer_info[i]; -		e1000_unmap_and_free_tx_resource(adapter, buffer_info); +		e1000_unmap_and_free_tx_resource(adapter, buffer_info, 0);  	}  	netdev_reset_queue(adapter->netdev); @@ -2958,7 +2959,7 @@ dma_error:  			i += tx_ring->count;  		i--;  		buffer_info = &tx_ring->buffer_info[i]; -		e1000_unmap_and_free_tx_resource(adapter, buffer_info); +		e1000_unmap_and_free_tx_resource(adapter, buffer_info, 0);  	}  	return 0; @@ -3856,7 +3857,8 @@ static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,  				}  			} -			e1000_unmap_and_free_tx_resource(adapter, buffer_info); +			e1000_unmap_and_free_tx_resource(adapter, buffer_info, +							 64);  			tx_desc->upper.data = 0;  			if (unlikely(++i == tx_ring->count)) @@ -4382,7 +4384,7 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,  		if (!skb) {  			unsigned int frag_len = e1000_frag_len(adapter); -			skb = build_skb(data - E1000_HEADROOM, frag_len); +			skb = napi_build_skb(data - E1000_HEADROOM, frag_len);  			if (!skb) {  				adapter->alloc_rx_buff_failed++;  				break;  |