diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igb/igb_ethtool.c')
| -rw-r--r-- | drivers/net/ethernet/intel/igb/igb_ethtool.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c index e5f3e7680dc6..7d60da1b7bf4 100644 --- a/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c @@ -1413,6 +1413,8 @@ static int igb_intr_test(struct igb_adapter *adapter, u64 *data)  			*data = 1;  			return -1;  		} +		wr32(E1000_IVAR_MISC, E1000_IVAR_VALID << 8); +		wr32(E1000_EIMS, BIT(0));  	} else if (adapter->flags & IGB_FLAG_HAS_MSI) {  		shared_int = false;  		if (request_irq(irq, @@ -2311,15 +2313,15 @@ static void igb_get_ethtool_stats(struct net_device *netdev,  		ring = adapter->tx_ring[j];  		do { -			start = u64_stats_fetch_begin_irq(&ring->tx_syncp); +			start = u64_stats_fetch_begin(&ring->tx_syncp);  			data[i]   = ring->tx_stats.packets;  			data[i+1] = ring->tx_stats.bytes;  			data[i+2] = ring->tx_stats.restart_queue; -		} while (u64_stats_fetch_retry_irq(&ring->tx_syncp, start)); +		} while (u64_stats_fetch_retry(&ring->tx_syncp, start));  		do { -			start = u64_stats_fetch_begin_irq(&ring->tx_syncp2); +			start = u64_stats_fetch_begin(&ring->tx_syncp2);  			restart2  = ring->tx_stats.restart_queue2; -		} while (u64_stats_fetch_retry_irq(&ring->tx_syncp2, start)); +		} while (u64_stats_fetch_retry(&ring->tx_syncp2, start));  		data[i+2] += restart2;  		i += IGB_TX_QUEUE_STATS_LEN; @@ -2327,13 +2329,13 @@ static void igb_get_ethtool_stats(struct net_device *netdev,  	for (j = 0; j < adapter->num_rx_queues; j++) {  		ring = adapter->rx_ring[j];  		do { -			start = u64_stats_fetch_begin_irq(&ring->rx_syncp); +			start = u64_stats_fetch_begin(&ring->rx_syncp);  			data[i]   = ring->rx_stats.packets;  			data[i+1] = ring->rx_stats.bytes;  			data[i+2] = ring->rx_stats.drops;  			data[i+3] = ring->rx_stats.csum_err;  			data[i+4] = ring->rx_stats.alloc_failed; -		} while (u64_stats_fetch_retry_irq(&ring->rx_syncp, start)); +		} while (u64_stats_fetch_retry(&ring->rx_syncp, start));  		i += IGB_RX_QUEUE_STATS_LEN;  	}  	spin_unlock(&adapter->stats64_lock);  |