diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igc')
| -rw-r--r-- | drivers/net/ethernet/intel/igc/igc_main.c | 12 | 
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index 1c4676882082..fa764190f270 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -254,6 +254,13 @@ static void igc_clean_tx_ring(struct igc_ring *tx_ring)  	/* reset BQL for queue */  	netdev_tx_reset_queue(txring_txq(tx_ring)); +	/* Zero out the buffer ring */ +	memset(tx_ring->tx_buffer_info, 0, +	       sizeof(*tx_ring->tx_buffer_info) * tx_ring->count); + +	/* Zero out the descriptor ring */ +	memset(tx_ring->desc, 0, tx_ring->size); +  	/* reset next_to_use and next_to_clean */  	tx_ring->next_to_use = 0;  	tx_ring->next_to_clean = 0; @@ -267,7 +274,7 @@ static void igc_clean_tx_ring(struct igc_ring *tx_ring)   */  void igc_free_tx_resources(struct igc_ring *tx_ring)  { -	igc_clean_tx_ring(tx_ring); +	igc_disable_tx_ring(tx_ring);  	vfree(tx_ring->tx_buffer_info);  	tx_ring->tx_buffer_info = NULL; @@ -6723,6 +6730,9 @@ static void igc_remove(struct pci_dev *pdev)  	igc_ptp_stop(adapter); +	pci_disable_ptm(pdev); +	pci_clear_master(pdev); +  	set_bit(__IGC_DOWN, &adapter->state);  	del_timer_sync(&adapter->watchdog_timer);  |