diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igc/igc_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/igc/igc_main.c | 15 | 
1 files changed, 11 insertions, 4 deletions
| diff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c index 34889be63e78..1586e1e435c6 100644 --- a/drivers/net/ethernet/intel/igc/igc_main.c +++ b/drivers/net/ethernet/intel/igc/igc_main.c @@ -4682,10 +4682,10 @@ void igc_update_stats(struct igc_adapter *adapter)  		}  		do { -			start = u64_stats_fetch_begin_irq(&ring->rx_syncp); +			start = u64_stats_fetch_begin(&ring->rx_syncp);  			_bytes = ring->rx_stats.bytes;  			_packets = ring->rx_stats.packets; -		} while (u64_stats_fetch_retry_irq(&ring->rx_syncp, start)); +		} while (u64_stats_fetch_retry(&ring->rx_syncp, start));  		bytes += _bytes;  		packets += _packets;  	} @@ -4699,10 +4699,10 @@ void igc_update_stats(struct igc_adapter *adapter)  		struct igc_ring *ring = adapter->tx_ring[i];  		do { -			start = u64_stats_fetch_begin_irq(&ring->tx_syncp); +			start = u64_stats_fetch_begin(&ring->tx_syncp);  			_bytes = ring->tx_stats.bytes;  			_packets = ring->tx_stats.packets; -		} while (u64_stats_fetch_retry_irq(&ring->tx_syncp, start)); +		} while (u64_stats_fetch_retry(&ring->tx_syncp, start));  		bytes += _bytes;  		packets += _packets;  	} @@ -5381,6 +5381,13 @@ static void igc_watchdog_task(struct work_struct *work)  				break;  			} +			/* Once the launch time has been set on the wire, there +			 * is a delay before the link speed can be determined +			 * based on link-up activity. Write into the register +			 * as soon as we know the correct link speed. +			 */ +			igc_tsn_adjust_txtime_offset(adapter); +  			if (adapter->link_speed != SPEED_1000)  				goto no_wait; |