diff options
author | Matthew Vick <matthew.vick@intel.com> | 2012-08-18 03:26:33 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2012-09-17 05:04:24 -0400 |
commit | 1f6e8178d6851951876ad8524f4de7a0e6b111be (patch) | |
tree | e7a363f6216bc4456ae57d4cd1895bcf5f958ce8 /drivers/net/ethernet/intel/igb/e1000_defines.h | |
parent | 201987e3d03fadf0d87980981b7421198e3e5922 (diff) |
igb: Prevent dropped Tx timestamps via work items and interrupts.
In rare circumstances, it's possible a descriptor writeback will occur
before a timestamped Tx packet will go out on the wire, leading to the
driver believing the hardware failed to timestamp the packet. Schedule a
work item for 82576 and use the available time sync interrupt registers
on 82580 and above to account for this.
Cc: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: Matthew Vick <matthew.vick@intel.com>
Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/igb/e1000_defines.h')
-rw-r--r-- | drivers/net/ethernet/intel/igb/e1000_defines.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/igb/e1000_defines.h b/drivers/net/ethernet/intel/igb/e1000_defines.h index ec7e4fe3e3ee..0b27e8fe06bf 100644 --- a/drivers/net/ethernet/intel/igb/e1000_defines.h +++ b/drivers/net/ethernet/intel/igb/e1000_defines.h | |||
@@ -360,6 +360,7 @@ | |||
360 | #define E1000_ICR_RXDMT0 0x00000010 /* rx desc min. threshold (0) */ | 360 | #define E1000_ICR_RXDMT0 0x00000010 /* rx desc min. threshold (0) */ |
361 | #define E1000_ICR_RXT0 0x00000080 /* rx timer intr (ring 0) */ | 361 | #define E1000_ICR_RXT0 0x00000080 /* rx timer intr (ring 0) */ |
362 | #define E1000_ICR_VMMB 0x00000100 /* VM MB event */ | 362 | #define E1000_ICR_VMMB 0x00000100 /* VM MB event */ |
363 | #define E1000_ICR_TS 0x00080000 /* Time Sync Interrupt */ | ||
363 | #define E1000_ICR_DRSTA 0x40000000 /* Device Reset Asserted */ | 364 | #define E1000_ICR_DRSTA 0x40000000 /* Device Reset Asserted */ |
364 | /* If this bit asserted, the driver should claim the interrupt */ | 365 | /* If this bit asserted, the driver should claim the interrupt */ |
365 | #define E1000_ICR_INT_ASSERTED 0x80000000 | 366 | #define E1000_ICR_INT_ASSERTED 0x80000000 |
@@ -399,6 +400,7 @@ | |||
399 | #define E1000_IMS_TXDW E1000_ICR_TXDW /* Transmit desc written back */ | 400 | #define E1000_IMS_TXDW E1000_ICR_TXDW /* Transmit desc written back */ |
400 | #define E1000_IMS_LSC E1000_ICR_LSC /* Link Status Change */ | 401 | #define E1000_IMS_LSC E1000_ICR_LSC /* Link Status Change */ |
401 | #define E1000_IMS_VMMB E1000_ICR_VMMB /* Mail box activity */ | 402 | #define E1000_IMS_VMMB E1000_ICR_VMMB /* Mail box activity */ |
403 | #define E1000_IMS_TS E1000_ICR_TS /* Time Sync Interrupt */ | ||
402 | #define E1000_IMS_RXSEQ E1000_ICR_RXSEQ /* rx sequence error */ | 404 | #define E1000_IMS_RXSEQ E1000_ICR_RXSEQ /* rx sequence error */ |
403 | #define E1000_IMS_RXDMT0 E1000_ICR_RXDMT0 /* rx desc min. threshold */ | 405 | #define E1000_IMS_RXDMT0 E1000_ICR_RXDMT0 /* rx desc min. threshold */ |
404 | #define E1000_IMS_RXT0 E1000_ICR_RXT0 /* rx timer intr */ | 406 | #define E1000_IMS_RXT0 E1000_ICR_RXT0 /* rx timer intr */ |
@@ -510,6 +512,9 @@ | |||
510 | 512 | ||
511 | #define E1000_TIMINCA_16NS_SHIFT 24 | 513 | #define E1000_TIMINCA_16NS_SHIFT 24 |
512 | 514 | ||
515 | #define E1000_TSICR_TXTS 0x00000002 | ||
516 | #define E1000_TSIM_TXTS 0x00000002 | ||
517 | |||
513 | #define E1000_MDICNFG_EXT_MDIO 0x80000000 /* MDI ext/int destination */ | 518 | #define E1000_MDICNFG_EXT_MDIO 0x80000000 /* MDI ext/int destination */ |
514 | #define E1000_MDICNFG_COM_MDIO 0x40000000 /* MDI shared w/ lan 0 */ | 519 | #define E1000_MDICNFG_COM_MDIO 0x40000000 /* MDI shared w/ lan 0 */ |
515 | #define E1000_MDICNFG_PHY_MASK 0x03E00000 | 520 | #define E1000_MDICNFG_PHY_MASK 0x03E00000 |