]> git.baikalelectronics.ru Git - kernel.git/commit
igb: Clear TSICR interrupts together with ICR
authorJoanna Yurdal <jyu@trackman.com>
Wed, 16 May 2018 11:14:11 +0000 (13:14 +0200)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Mon, 4 Jun 2018 16:55:36 +0000 (09:55 -0700)
commit31fad7a53c1eb6b008f2b3678671b5dfee46175e
tree572ac6edc713669de23ccbbc090c7303e2502406
parentf9f0a86c248eb040f9dc32a6fe38bda05a1fd927
igb: Clear TSICR interrupts together with ICR

Issuing "ip link set up/down" can block TSICR interrupts, what results in
missing PTP Tx timestamp and no PPS pulse generation.

Problem happens when the link is set up with the TSICR interrupts pending.
ICR is cleared before enabling interrupts, while TSICR is not. When all TSICR
interrupts are pending at this moment, time_sync interrupt will never
be generated. TSICR should be cleared as well.

In order to reproduce the issue:
1. Setup linux with IEEE 1588 grandmaster and PPS output enabled
2. Continue setting link up/down with random intervals between commands
3. Wait until PPS is not generated ( only one pulse is generated and PPS
dies), and ptp4l complains constantly about Tx timeout.

Signed-off-by: Joanna Yurdal <jyu@trackman.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/igb/igb_main.c