diff options
-rw-r--r-- | drivers/net/ethernet/intel/Kconfig | 26 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igb/Makefile | 4 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igb/igb.h | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igb/igb_ethtool.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/igb/igb_main.c | 28 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/Makefile | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe.h | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 28 | ||||
-rw-r--r-- | drivers/net/ethernet/oki-semi/pch_gbe/Kconfig | 14 | ||||
-rw-r--r-- | drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 14 | ||||
-rw-r--r-- | drivers/net/ethernet/sfc/Kconfig | 7 | ||||
-rw-r--r-- | drivers/net/ethernet/sfc/Makefile | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/sfc/net_driver.h | 2 | ||||
-rw-r--r-- | drivers/net/ethernet/sfc/nic.h | 26 | ||||
-rw-r--r-- | drivers/ptp/Kconfig | 13 |
17 files changed, 13 insertions, 173 deletions
diff --git a/drivers/net/ethernet/intel/Kconfig b/drivers/net/ethernet/intel/Kconfig index d5b359df6e7..73d28d51b5d 100644 --- a/drivers/net/ethernet/intel/Kconfig +++ b/drivers/net/ethernet/intel/Kconfig | |||
@@ -93,6 +93,7 @@ config E1000E | |||
93 | config IGB | 93 | config IGB |
94 | tristate "Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support" | 94 | tristate "Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support" |
95 | depends on PCI | 95 | depends on PCI |
96 | select PTP_1588_CLOCK | ||
96 | ---help--- | 97 | ---help--- |
97 | This driver supports Intel(R) 82575/82576 gigabit ethernet family of | 98 | This driver supports Intel(R) 82575/82576 gigabit ethernet family of |
98 | adapters. For more information on how to identify your adapter, go | 99 | adapters. For more information on how to identify your adapter, go |
@@ -120,18 +121,6 @@ config IGB_DCA | |||
120 | driver. DCA is a method for warming the CPU cache before data | 121 | driver. DCA is a method for warming the CPU cache before data |
121 | is used, with the intent of lessening the impact of cache misses. | 122 | is used, with the intent of lessening the impact of cache misses. |
122 | 123 | ||
123 | config IGB_PTP | ||
124 | bool "PTP Hardware Clock (PHC)" | ||
125 | default n | ||
126 | depends on IGB | ||
127 | select PTP_1588_CLOCK | ||
128 | ---help--- | ||
129 | Say Y here if you want to use PTP Hardware Clock (PHC) in the | ||
130 | driver. Only the basic clock operations have been implemented. | ||
131 | |||
132 | Every timestamp and clock read operations must consult the | ||
133 | overflow counter to form a correct time value. | ||
134 | |||
135 | config IGBVF | 124 | config IGBVF |
136 | tristate "Intel(R) 82576 Virtual Function Ethernet support" | 125 | tristate "Intel(R) 82576 Virtual Function Ethernet support" |
137 | depends on PCI | 126 | depends on PCI |
@@ -179,6 +168,7 @@ config IXGBE | |||
179 | tristate "Intel(R) 10GbE PCI Express adapters support" | 168 | tristate "Intel(R) 10GbE PCI Express adapters support" |
180 | depends on PCI && INET | 169 | depends on PCI && INET |
181 | select MDIO | 170 | select MDIO |
171 | select PTP_1588_CLOCK | ||
182 | ---help--- | 172 | ---help--- |
183 | This driver supports Intel(R) 10GbE PCI Express family of | 173 | This driver supports Intel(R) 10GbE PCI Express family of |
184 | adapters. For more information on how to identify your adapter, go | 174 | adapters. For more information on how to identify your adapter, go |
@@ -221,18 +211,6 @@ config IXGBE_DCB | |||
221 | 211 | ||
222 | If unsure, say N. | 212 | If unsure, say N. |
223 | 213 | ||
224 | config IXGBE_PTP | ||
225 | bool "PTP Clock Support" | ||
226 | default n | ||
227 | depends on IXGBE | ||
228 | select PTP_1588_CLOCK | ||
229 | ---help--- | ||
230 | Say Y here if you want support for 1588 Timestamping with a | ||
231 | PHC device, using the PTP 1588 Clock support. This is | ||
232 | required to enable timestamping support for the device. | ||
233 | |||
234 | If unsure, say N. | ||
235 | |||
236 | config IXGBEVF | 214 | config IXGBEVF |
237 | tristate "Intel(R) 82599 Virtual Function Ethernet support" | 215 | tristate "Intel(R) 82599 Virtual Function Ethernet support" |
238 | depends on PCI_MSI | 216 | depends on PCI_MSI |
diff --git a/drivers/net/ethernet/intel/igb/Makefile b/drivers/net/ethernet/intel/igb/Makefile index 97c197fd4a8..624476cfa72 100644 --- a/drivers/net/ethernet/intel/igb/Makefile +++ b/drivers/net/ethernet/intel/igb/Makefile | |||
@@ -34,6 +34,4 @@ obj-$(CONFIG_IGB) += igb.o | |||
34 | 34 | ||
35 | igb-objs := igb_main.o igb_ethtool.o e1000_82575.o \ | 35 | igb-objs := igb_main.o igb_ethtool.o e1000_82575.o \ |
36 | e1000_mac.o e1000_nvm.o e1000_phy.o e1000_mbx.o \ | 36 | e1000_mac.o e1000_nvm.o e1000_phy.o e1000_mbx.o \ |
37 | e1000_i210.o | 37 | e1000_i210.o igb_ptp.o |
38 | |||
39 | igb-$(CONFIG_IGB_PTP) += igb_ptp.o | ||
diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h index be1971b1829..796db53954d 100644 --- a/drivers/net/ethernet/intel/igb/igb.h +++ b/drivers/net/ethernet/intel/igb/igb.h | |||
@@ -34,11 +34,9 @@ | |||
34 | #include "e1000_mac.h" | 34 | #include "e1000_mac.h" |
35 | #include "e1000_82575.h" | 35 | #include "e1000_82575.h" |
36 | 36 | ||
37 | #ifdef CONFIG_IGB_PTP | ||
38 | #include <linux/clocksource.h> | 37 | #include <linux/clocksource.h> |
39 | #include <linux/net_tstamp.h> | 38 | #include <linux/net_tstamp.h> |
40 | #include <linux/ptp_clock_kernel.h> | 39 | #include <linux/ptp_clock_kernel.h> |
41 | #endif /* CONFIG_IGB_PTP */ | ||
42 | #include <linux/bitops.h> | 40 | #include <linux/bitops.h> |
43 | #include <linux/if_vlan.h> | 41 | #include <linux/if_vlan.h> |
44 | 42 | ||
@@ -376,7 +374,6 @@ struct igb_adapter { | |||
376 | u32 wvbr; | 374 | u32 wvbr; |
377 | u32 *shadow_vfta; | 375 | u32 *shadow_vfta; |
378 | 376 | ||
379 | #ifdef CONFIG_IGB_PTP | ||
380 | struct ptp_clock *ptp_clock; | 377 | struct ptp_clock *ptp_clock; |
381 | struct ptp_clock_info ptp_caps; | 378 | struct ptp_clock_info ptp_caps; |
382 | struct delayed_work ptp_overflow_work; | 379 | struct delayed_work ptp_overflow_work; |
@@ -385,7 +382,6 @@ struct igb_adapter { | |||
385 | spinlock_t tmreg_lock; | 382 | spinlock_t tmreg_lock; |
386 | struct cyclecounter cc; | 383 | struct cyclecounter cc; |
387 | struct timecounter tc; | 384 | struct timecounter tc; |
388 | #endif /* CONFIG_IGB_PTP */ | ||
389 | 385 | ||
390 | char fw_version[32]; | 386 | char fw_version[32]; |
391 | }; | 387 | }; |
@@ -439,7 +435,6 @@ extern bool igb_has_link(struct igb_adapter *adapter); | |||
439 | extern void igb_set_ethtool_ops(struct net_device *); | 435 | extern void igb_set_ethtool_ops(struct net_device *); |
440 | extern void igb_power_up_link(struct igb_adapter *); | 436 | extern void igb_power_up_link(struct igb_adapter *); |
441 | extern void igb_set_fw_version(struct igb_adapter *); | 437 | extern void igb_set_fw_version(struct igb_adapter *); |
442 | #ifdef CONFIG_IGB_PTP | ||
443 | extern void igb_ptp_init(struct igb_adapter *adapter); | 438 | extern void igb_ptp_init(struct igb_adapter *adapter); |
444 | extern void igb_ptp_stop(struct igb_adapter *adapter); | 439 | extern void igb_ptp_stop(struct igb_adapter *adapter); |
445 | extern void igb_ptp_reset(struct igb_adapter *adapter); | 440 | extern void igb_ptp_reset(struct igb_adapter *adapter); |
@@ -461,7 +456,6 @@ static inline void igb_ptp_rx_hwtstamp(struct igb_q_vector *q_vector, | |||
461 | 456 | ||
462 | extern int igb_ptp_hwtstamp_ioctl(struct net_device *netdev, | 457 | extern int igb_ptp_hwtstamp_ioctl(struct net_device *netdev, |
463 | struct ifreq *ifr, int cmd); | 458 | struct ifreq *ifr, int cmd); |
464 | #endif /* CONFIG_IGB_PTP */ | ||
465 | 459 | ||
466 | static inline s32 igb_reset_phy(struct e1000_hw *hw) | 460 | static inline s32 igb_reset_phy(struct e1000_hw *hw) |
467 | { | 461 | { |
diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c index 375c0dad8d2..d8b1bee606c 100644 --- a/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c | |||
@@ -2310,7 +2310,6 @@ static int igb_get_ts_info(struct net_device *dev, | |||
2310 | struct igb_adapter *adapter = netdev_priv(dev); | 2310 | struct igb_adapter *adapter = netdev_priv(dev); |
2311 | 2311 | ||
2312 | switch (adapter->hw.mac.type) { | 2312 | switch (adapter->hw.mac.type) { |
2313 | #ifdef CONFIG_IGB_PTP | ||
2314 | case e1000_82576: | 2313 | case e1000_82576: |
2315 | case e1000_82580: | 2314 | case e1000_82580: |
2316 | case e1000_i350: | 2315 | case e1000_i350: |
@@ -2346,7 +2345,6 @@ static int igb_get_ts_info(struct net_device *dev, | |||
2346 | (1 << HWTSTAMP_FILTER_PTP_V2_EVENT); | 2345 | (1 << HWTSTAMP_FILTER_PTP_V2_EVENT); |
2347 | 2346 | ||
2348 | return 0; | 2347 | return 0; |
2349 | #endif /* CONFIG_IGB_PTP */ | ||
2350 | default: | 2348 | default: |
2351 | return -EOPNOTSUPP; | 2349 | return -EOPNOTSUPP; |
2352 | } | 2350 | } |
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index df1e7907bba..082ce73dc62 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c | |||
@@ -1708,10 +1708,8 @@ void igb_reset(struct igb_adapter *adapter) | |||
1708 | /* Enable h/w to recognize an 802.1Q VLAN Ethernet packet */ | 1708 | /* Enable h/w to recognize an 802.1Q VLAN Ethernet packet */ |
1709 | wr32(E1000_VET, ETHERNET_IEEE_VLAN_TYPE); | 1709 | wr32(E1000_VET, ETHERNET_IEEE_VLAN_TYPE); |
1710 | 1710 | ||
1711 | #ifdef CONFIG_IGB_PTP | ||
1712 | /* Re-enable PTP, where applicable. */ | 1711 | /* Re-enable PTP, where applicable. */ |
1713 | igb_ptp_reset(adapter); | 1712 | igb_ptp_reset(adapter); |
1714 | #endif /* CONFIG_IGB_PTP */ | ||
1715 | 1713 | ||
1716 | igb_get_phy_info(hw); | 1714 | igb_get_phy_info(hw); |
1717 | } | 1715 | } |
@@ -2119,10 +2117,8 @@ static int __devinit igb_probe(struct pci_dev *pdev, | |||
2119 | 2117 | ||
2120 | #endif | 2118 | #endif |
2121 | 2119 | ||
2122 | #ifdef CONFIG_IGB_PTP | ||
2123 | /* do hw tstamp init after resetting */ | 2120 | /* do hw tstamp init after resetting */ |
2124 | igb_ptp_init(adapter); | 2121 | igb_ptp_init(adapter); |
2125 | #endif /* CONFIG_IGB_PTP */ | ||
2126 | 2122 | ||
2127 | dev_info(&pdev->dev, "Intel(R) Gigabit Ethernet Network Connection\n"); | 2123 | dev_info(&pdev->dev, "Intel(R) Gigabit Ethernet Network Connection\n"); |
2128 | /* print bus type/speed/width info */ | 2124 | /* print bus type/speed/width info */ |
@@ -2197,9 +2193,7 @@ static void __devexit igb_remove(struct pci_dev *pdev) | |||
2197 | struct e1000_hw *hw = &adapter->hw; | 2193 | struct e1000_hw *hw = &adapter->hw; |
2198 | 2194 | ||
2199 | pm_runtime_get_noresume(&pdev->dev); | 2195 | pm_runtime_get_noresume(&pdev->dev); |
2200 | #ifdef CONFIG_IGB_PTP | ||
2201 | igb_ptp_stop(adapter); | 2196 | igb_ptp_stop(adapter); |
2202 | #endif /* CONFIG_IGB_PTP */ | ||
2203 | 2197 | ||
2204 | /* | 2198 | /* |
2205 | * The watchdog timer may be rescheduled, so explicitly | 2199 | * The watchdog timer may be rescheduled, so explicitly |
@@ -3095,10 +3089,8 @@ void igb_configure_rx_ring(struct igb_adapter *adapter, | |||
3095 | srrctl = IGB_RX_HDR_LEN << E1000_SRRCTL_BSIZEHDRSIZE_SHIFT; | 3089 | srrctl = IGB_RX_HDR_LEN << E1000_SRRCTL_BSIZEHDRSIZE_SHIFT; |
3096 | srrctl |= IGB_RX_BUFSZ >> E1000_SRRCTL_BSIZEPKT_SHIFT; | 3090 | srrctl |= IGB_RX_BUFSZ >> E1000_SRRCTL_BSIZEPKT_SHIFT; |
3097 | srrctl |= E1000_SRRCTL_DESCTYPE_ADV_ONEBUF; | 3091 | srrctl |= E1000_SRRCTL_DESCTYPE_ADV_ONEBUF; |
3098 | #ifdef CONFIG_IGB_PTP | ||
3099 | if (hw->mac.type >= e1000_82580) | 3092 | if (hw->mac.type >= e1000_82580) |
3100 | srrctl |= E1000_SRRCTL_TIMESTAMP; | 3093 | srrctl |= E1000_SRRCTL_TIMESTAMP; |
3101 | #endif /* CONFIG_IGB_PTP */ | ||
3102 | /* Only set Drop Enable if we are supporting multiple queues */ | 3094 | /* Only set Drop Enable if we are supporting multiple queues */ |
3103 | if (adapter->vfs_allocated_count || adapter->num_rx_queues > 1) | 3095 | if (adapter->vfs_allocated_count || adapter->num_rx_queues > 1) |
3104 | srrctl |= E1000_SRRCTL_DROP_EN; | 3096 | srrctl |= E1000_SRRCTL_DROP_EN; |
@@ -4134,11 +4126,9 @@ static __le32 igb_tx_cmd_type(u32 tx_flags) | |||
4134 | if (tx_flags & IGB_TX_FLAGS_VLAN) | 4126 | if (tx_flags & IGB_TX_FLAGS_VLAN) |
4135 | cmd_type |= cpu_to_le32(E1000_ADVTXD_DCMD_VLE); | 4127 | cmd_type |= cpu_to_le32(E1000_ADVTXD_DCMD_VLE); |
4136 | 4128 | ||
4137 | #ifdef CONFIG_IGB_PTP | ||
4138 | /* set timestamp bit if present */ | 4129 | /* set timestamp bit if present */ |
4139 | if (unlikely(tx_flags & IGB_TX_FLAGS_TSTAMP)) | 4130 | if (unlikely(tx_flags & IGB_TX_FLAGS_TSTAMP)) |
4140 | cmd_type |= cpu_to_le32(E1000_ADVTXD_MAC_TSTAMP); | 4131 | cmd_type |= cpu_to_le32(E1000_ADVTXD_MAC_TSTAMP); |
4141 | #endif /* CONFIG_IGB_PTP */ | ||
4142 | 4132 | ||
4143 | /* set segmentation bits for TSO */ | 4133 | /* set segmentation bits for TSO */ |
4144 | if (tx_flags & IGB_TX_FLAGS_TSO) | 4134 | if (tx_flags & IGB_TX_FLAGS_TSO) |
@@ -4347,9 +4337,7 @@ static inline int igb_maybe_stop_tx(struct igb_ring *tx_ring, const u16 size) | |||
4347 | netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb, | 4337 | netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb, |
4348 | struct igb_ring *tx_ring) | 4338 | struct igb_ring *tx_ring) |
4349 | { | 4339 | { |
4350 | #ifdef CONFIG_IGB_PTP | ||
4351 | struct igb_adapter *adapter = netdev_priv(tx_ring->netdev); | 4340 | struct igb_adapter *adapter = netdev_priv(tx_ring->netdev); |
4352 | #endif /* CONFIG_IGB_PTP */ | ||
4353 | struct igb_tx_buffer *first; | 4341 | struct igb_tx_buffer *first; |
4354 | int tso; | 4342 | int tso; |
4355 | u32 tx_flags = 0; | 4343 | u32 tx_flags = 0; |
@@ -4372,7 +4360,6 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb, | |||
4372 | first->bytecount = skb->len; | 4360 | first->bytecount = skb->len; |
4373 | first->gso_segs = 1; | 4361 | first->gso_segs = 1; |
4374 | 4362 | ||
4375 | #ifdef CONFIG_IGB_PTP | ||
4376 | if (unlikely((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) && | 4363 | if (unlikely((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) && |
4377 | !(adapter->ptp_tx_skb))) { | 4364 | !(adapter->ptp_tx_skb))) { |
4378 | skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; | 4365 | skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; |
@@ -4382,7 +4369,6 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb, | |||
4382 | if (adapter->hw.mac.type == e1000_82576) | 4369 | if (adapter->hw.mac.type == e1000_82576) |
4383 | schedule_work(&adapter->ptp_tx_work); | 4370 | schedule_work(&adapter->ptp_tx_work); |
4384 | } | 4371 | } |
4385 | #endif /* CONFIG_IGB_PTP */ | ||
4386 | 4372 | ||
4387 | if (vlan_tx_tag_present(skb)) { | 4373 | if (vlan_tx_tag_present(skb)) { |
4388 | tx_flags |= IGB_TX_FLAGS_VLAN; | 4374 | tx_flags |= IGB_TX_FLAGS_VLAN; |
@@ -4776,7 +4762,6 @@ static irqreturn_t igb_msix_other(int irq, void *data) | |||
4776 | mod_timer(&adapter->watchdog_timer, jiffies + 1); | 4762 | mod_timer(&adapter->watchdog_timer, jiffies + 1); |
4777 | } | 4763 | } |
4778 | 4764 | ||
4779 | #ifdef CONFIG_IGB_PTP | ||
4780 | if (icr & E1000_ICR_TS) { | 4765 | if (icr & E1000_ICR_TS) { |
4781 | u32 tsicr = rd32(E1000_TSICR); | 4766 | u32 tsicr = rd32(E1000_TSICR); |
4782 | 4767 | ||
@@ -4787,7 +4772,6 @@ static irqreturn_t igb_msix_other(int irq, void *data) | |||
4787 | schedule_work(&adapter->ptp_tx_work); | 4772 | schedule_work(&adapter->ptp_tx_work); |
4788 | } | 4773 | } |
4789 | } | 4774 | } |
4790 | #endif /* CONFIG_IGB_PTP */ | ||
4791 | 4775 | ||
4792 | wr32(E1000_EIMS, adapter->eims_other); | 4776 | wr32(E1000_EIMS, adapter->eims_other); |
4793 | 4777 | ||
@@ -5539,7 +5523,6 @@ static irqreturn_t igb_intr_msi(int irq, void *data) | |||
5539 | mod_timer(&adapter->watchdog_timer, jiffies + 1); | 5523 | mod_timer(&adapter->watchdog_timer, jiffies + 1); |
5540 | } | 5524 | } |
5541 | 5525 | ||
5542 | #ifdef CONFIG_IGB_PTP | ||
5543 | if (icr & E1000_ICR_TS) { | 5526 | if (icr & E1000_ICR_TS) { |
5544 | u32 tsicr = rd32(E1000_TSICR); | 5527 | u32 tsicr = rd32(E1000_TSICR); |
5545 | 5528 | ||
@@ -5550,7 +5533,6 @@ static irqreturn_t igb_intr_msi(int irq, void *data) | |||
5550 | schedule_work(&adapter->ptp_tx_work); | 5533 | schedule_work(&adapter->ptp_tx_work); |
5551 | } | 5534 | } |
5552 | } | 5535 | } |
5553 | #endif /* CONFIG_IGB_PTP */ | ||
5554 | 5536 | ||
5555 | napi_schedule(&q_vector->napi); | 5537 | napi_schedule(&q_vector->napi); |
5556 | 5538 | ||
@@ -5593,7 +5575,6 @@ static irqreturn_t igb_intr(int irq, void *data) | |||
5593 | mod_timer(&adapter->watchdog_timer, jiffies + 1); | 5575 | mod_timer(&adapter->watchdog_timer, jiffies + 1); |
5594 | } | 5576 | } |
5595 | 5577 | ||
5596 | #ifdef CONFIG_IGB_PTP | ||
5597 | if (icr & E1000_ICR_TS) { | 5578 | if (icr & E1000_ICR_TS) { |
5598 | u32 tsicr = rd32(E1000_TSICR); | 5579 | u32 tsicr = rd32(E1000_TSICR); |
5599 | 5580 | ||
@@ -5604,7 +5585,6 @@ static irqreturn_t igb_intr(int irq, void *data) | |||
5604 | schedule_work(&adapter->ptp_tx_work); | 5585 | schedule_work(&adapter->ptp_tx_work); |
5605 | } | 5586 | } |
5606 | } | 5587 | } |
5607 | #endif /* CONFIG_IGB_PTP */ | ||
5608 | 5588 | ||
5609 | napi_schedule(&q_vector->napi); | 5589 | napi_schedule(&q_vector->napi); |
5610 | 5590 | ||
@@ -5889,14 +5869,12 @@ static bool igb_add_rx_frag(struct igb_ring *rx_ring, | |||
5889 | if ((size <= IGB_RX_HDR_LEN) && !skb_is_nonlinear(skb)) { | 5869 | if ((size <= IGB_RX_HDR_LEN) && !skb_is_nonlinear(skb)) { |
5890 | unsigned char *va = page_address(page) + rx_buffer->page_offset; | 5870 | unsigned char *va = page_address(page) + rx_buffer->page_offset; |
5891 | 5871 | ||
5892 | #ifdef CONFIG_IGB_PTP | ||
5893 | if (igb_test_staterr(rx_desc, E1000_RXDADV_STAT_TSIP)) { | 5872 | if (igb_test_staterr(rx_desc, E1000_RXDADV_STAT_TSIP)) { |
5894 | igb_ptp_rx_pktstamp(rx_ring->q_vector, va, skb); | 5873 | igb_ptp_rx_pktstamp(rx_ring->q_vector, va, skb); |
5895 | va += IGB_TS_HDR_LEN; | 5874 | va += IGB_TS_HDR_LEN; |
5896 | size -= IGB_TS_HDR_LEN; | 5875 | size -= IGB_TS_HDR_LEN; |
5897 | } | 5876 | } |
5898 | 5877 | ||
5899 | #endif | ||
5900 | memcpy(__skb_put(skb, size), va, ALIGN(size, sizeof(long))); | 5878 | memcpy(__skb_put(skb, size), va, ALIGN(size, sizeof(long))); |
5901 | 5879 | ||
5902 | /* we can reuse buffer as-is, just make sure it is local */ | 5880 | /* we can reuse buffer as-is, just make sure it is local */ |
@@ -6221,7 +6199,6 @@ static void igb_pull_tail(struct igb_ring *rx_ring, | |||
6221 | */ | 6199 | */ |
6222 | va = skb_frag_address(frag); | 6200 | va = skb_frag_address(frag); |
6223 | 6201 | ||
6224 | #ifdef CONFIG_IGB_PTP | ||
6225 | if (igb_test_staterr(rx_desc, E1000_RXDADV_STAT_TSIP)) { | 6202 | if (igb_test_staterr(rx_desc, E1000_RXDADV_STAT_TSIP)) { |
6226 | /* retrieve timestamp from buffer */ | 6203 | /* retrieve timestamp from buffer */ |
6227 | igb_ptp_rx_pktstamp(rx_ring->q_vector, va, skb); | 6204 | igb_ptp_rx_pktstamp(rx_ring->q_vector, va, skb); |
@@ -6236,7 +6213,6 @@ static void igb_pull_tail(struct igb_ring *rx_ring, | |||
6236 | va += IGB_TS_HDR_LEN; | 6213 | va += IGB_TS_HDR_LEN; |
6237 | } | 6214 | } |
6238 | 6215 | ||
6239 | #endif | ||
6240 | /* | 6216 | /* |
6241 | * we need the header to contain the greater of either ETH_HLEN or | 6217 | * we need the header to contain the greater of either ETH_HLEN or |
6242 | * 60 bytes if the skb->len is less than 60 for skb_pad. | 6218 | * 60 bytes if the skb->len is less than 60 for skb_pad. |
@@ -6317,9 +6293,7 @@ static void igb_process_skb_fields(struct igb_ring *rx_ring, | |||
6317 | 6293 | ||
6318 | igb_rx_checksum(rx_ring, rx_desc, skb); | 6294 | igb_rx_checksum(rx_ring, rx_desc, skb); |
6319 | 6295 | ||
6320 | #ifdef CONFIG_IGB_PTP | ||
6321 | igb_ptp_rx_hwtstamp(rx_ring->q_vector, rx_desc, skb); | 6296 | igb_ptp_rx_hwtstamp(rx_ring->q_vector, rx_desc, skb); |
6322 | #endif /* CONFIG_IGB_PTP */ | ||
6323 | 6297 | ||
6324 | if ((dev->features & NETIF_F_HW_VLAN_RX) && | 6298 | if ((dev->features & NETIF_F_HW_VLAN_RX) && |
6325 | igb_test_staterr(rx_desc, E1000_RXD_STAT_VP)) { | 6299 | igb_test_staterr(rx_desc, E1000_RXD_STAT_VP)) { |
@@ -6553,10 +6527,8 @@ static int igb_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) | |||
6553 | case SIOCGMIIREG: | 6527 | case SIOCGMIIREG: |
6554 | case SIOCSMIIREG: | 6528 | case SIOCSMIIREG: |
6555 | return igb_mii_ioctl(netdev, ifr, cmd); | 6529 | return igb_mii_ioctl(netdev, ifr, cmd); |
6556 | #ifdef CONFIG_IGB_PTP | ||
6557 | case SIOCSHWTSTAMP: | 6530 | case SIOCSHWTSTAMP: |
6558 | return igb_ptp_hwtstamp_ioctl(netdev, ifr, cmd); | 6531 | return igb_ptp_hwtstamp_ioctl(netdev, ifr, cmd); |
6559 | #endif /* CONFIG_IGB_PTP */ | ||
6560 | default: | 6532 | default: |
6561 | return -EOPNOTSUPP; | 6533 | return -EOPNOTSUPP; |
6562 | } | 6534 | } |
diff --git a/drivers/net/ethernet/intel/ixgbe/Makefile b/drivers/net/ethernet/intel/ixgbe/Makefile index 89f40e51fc1..f3a632bf8d9 100644 --- a/drivers/net/ethernet/intel/ixgbe/Makefile +++ b/drivers/net/ethernet/intel/ixgbe/Makefile | |||
@@ -34,11 +34,10 @@ obj-$(CONFIG_IXGBE) += ixgbe.o | |||
34 | 34 | ||
35 | ixgbe-objs := ixgbe_main.o ixgbe_common.o ixgbe_ethtool.o ixgbe_debugfs.o\ | 35 | ixgbe-objs := ixgbe_main.o ixgbe_common.o ixgbe_ethtool.o ixgbe_debugfs.o\ |
36 | ixgbe_82599.o ixgbe_82598.o ixgbe_phy.o ixgbe_sriov.o \ | 36 | ixgbe_82599.o ixgbe_82598.o ixgbe_phy.o ixgbe_sriov.o \ |
37 | ixgbe_mbx.o ixgbe_x540.o ixgbe_lib.o | 37 | ixgbe_mbx.o ixgbe_x540.o ixgbe_lib.o ixgbe_ptp.o |
38 | 38 | ||
39 | ixgbe-$(CONFIG_IXGBE_DCB) += ixgbe_dcb.o ixgbe_dcb_82598.o \ | 39 | ixgbe-$(CONFIG_IXGBE_DCB) += ixgbe_dcb.o ixgbe_dcb_82598.o \ |
40 | ixgbe_dcb_82599.o ixgbe_dcb_nl.o | 40 | ixgbe_dcb_82599.o ixgbe_dcb_nl.o |
41 | 41 | ||
42 | ixgbe-$(CONFIG_IXGBE_PTP) += ixgbe_ptp.o | ||
43 | ixgbe-$(CONFIG_IXGBE_HWMON) += ixgbe_sysfs.o | 42 | ixgbe-$(CONFIG_IXGBE_HWMON) += ixgbe_sysfs.o |
44 | ixgbe-$(CONFIG_FCOE:m=y) += ixgbe_fcoe.o | 43 | ixgbe-$(CONFIG_FCOE:m=y) += ixgbe_fcoe.o |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe.h b/drivers/net/ethernet/intel/ixgbe/ixgbe.h index a17116b3c47..7ff4c4fdcb0 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe.h +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe.h | |||
@@ -36,11 +36,9 @@ | |||
36 | #include <linux/aer.h> | 36 | #include <linux/aer.h> |
37 | #include <linux/if_vlan.h> | 37 | #include <linux/if_vlan.h> |
38 | 38 | ||
39 | #ifdef CONFIG_IXGBE_PTP | ||
40 | #include <linux/clocksource.h> | 39 | #include <linux/clocksource.h> |
41 | #include <linux/net_tstamp.h> | 40 | #include <linux/net_tstamp.h> |
42 | #include <linux/ptp_clock_kernel.h> | 41 | #include <linux/ptp_clock_kernel.h> |
43 | #endif /* CONFIG_IXGBE_PTP */ | ||
44 | 42 | ||
45 | #include "ixgbe_type.h" | 43 | #include "ixgbe_type.h" |
46 | #include "ixgbe_common.h" | 44 | #include "ixgbe_common.h" |
@@ -572,7 +570,6 @@ struct ixgbe_adapter { | |||
572 | u32 interrupt_event; | 570 | u32 interrupt_event; |
573 | u32 led_reg; | 571 | u32 led_reg; |
574 | 572 | ||
575 | #ifdef CONFIG_IXGBE_PTP | ||
576 | struct ptp_clock *ptp_clock; | 573 | struct ptp_clock *ptp_clock; |
577 | struct ptp_clock_info ptp_caps; | 574 | struct ptp_clock_info ptp_caps; |
578 | unsigned long last_overflow_check; | 575 | unsigned long last_overflow_check; |
@@ -581,7 +578,6 @@ struct ixgbe_adapter { | |||
581 | struct timecounter tc; | 578 | struct timecounter tc; |
582 | int rx_hwtstamp_filter; | 579 | int rx_hwtstamp_filter; |
583 | u32 base_incval; | 580 | u32 base_incval; |
584 | #endif /* CONFIG_IXGBE_PTP */ | ||
585 | 581 | ||
586 | /* SR-IOV */ | 582 | /* SR-IOV */ |
587 | DECLARE_BITMAP(active_vfs, IXGBE_MAX_VF_FUNCTIONS); | 583 | DECLARE_BITMAP(active_vfs, IXGBE_MAX_VF_FUNCTIONS); |
@@ -742,7 +738,6 @@ static inline struct netdev_queue *txring_txq(const struct ixgbe_ring *ring) | |||
742 | return netdev_get_tx_queue(ring->netdev, ring->queue_index); | 738 | return netdev_get_tx_queue(ring->netdev, ring->queue_index); |
743 | } | 739 | } |
744 | 740 | ||
745 | #ifdef CONFIG_IXGBE_PTP | ||
746 | extern void ixgbe_ptp_init(struct ixgbe_adapter *adapter); | 741 | extern void ixgbe_ptp_init(struct ixgbe_adapter *adapter); |
747 | extern void ixgbe_ptp_stop(struct ixgbe_adapter *adapter); | 742 | extern void ixgbe_ptp_stop(struct ixgbe_adapter *adapter); |
748 | extern void ixgbe_ptp_overflow_check(struct ixgbe_adapter *adapter); | 743 | extern void ixgbe_ptp_overflow_check(struct ixgbe_adapter *adapter); |
@@ -756,6 +751,5 @@ extern int ixgbe_ptp_hwtstamp_ioctl(struct ixgbe_adapter *adapter, | |||
756 | extern void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter); | 751 | extern void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter); |
757 | extern void ixgbe_ptp_reset(struct ixgbe_adapter *adapter); | 752 | extern void ixgbe_ptp_reset(struct ixgbe_adapter *adapter); |
758 | extern void ixgbe_ptp_check_pps_event(struct ixgbe_adapter *adapter, u32 eicr); | 753 | extern void ixgbe_ptp_check_pps_event(struct ixgbe_adapter *adapter, u32 eicr); |
759 | #endif /* CONFIG_IXGBE_PTP */ | ||
760 | 754 | ||
761 | #endif /* _IXGBE_H_ */ | 755 | #endif /* _IXGBE_H_ */ |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c index 872c3374ddf..bbf07bd6ab9 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | |||
@@ -2667,7 +2667,6 @@ static int ixgbe_get_ts_info(struct net_device *dev, | |||
2667 | struct ixgbe_adapter *adapter = netdev_priv(dev); | 2667 | struct ixgbe_adapter *adapter = netdev_priv(dev); |
2668 | 2668 | ||
2669 | switch (adapter->hw.mac.type) { | 2669 | switch (adapter->hw.mac.type) { |
2670 | #ifdef CONFIG_IXGBE_PTP | ||
2671 | case ixgbe_mac_X540: | 2670 | case ixgbe_mac_X540: |
2672 | case ixgbe_mac_82599EB: | 2671 | case ixgbe_mac_82599EB: |
2673 | info->so_timestamping = | 2672 | info->so_timestamping = |
@@ -2690,7 +2689,6 @@ static int ixgbe_get_ts_info(struct net_device *dev, | |||
2690 | (1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) | | 2689 | (1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) | |
2691 | (1 << HWTSTAMP_FILTER_PTP_V2_EVENT); | 2690 | (1 << HWTSTAMP_FILTER_PTP_V2_EVENT); |
2692 | break; | 2691 | break; |
2693 | #endif /* CONFIG_IXGBE_PTP */ | ||
2694 | default: | 2692 | default: |
2695 | return ethtool_op_get_ts_info(dev, info); | 2693 | return ethtool_op_get_ts_info(dev, info); |
2696 | break; | 2694 | break; |
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index 26bfaaee951..e5f993e8069 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | |||
@@ -841,10 +841,8 @@ static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector, | |||
841 | total_bytes += tx_buffer->bytecount; | 841 | total_bytes += tx_buffer->bytecount; |
842 | total_packets += tx_buffer->gso_segs; | 842 | total_packets += tx_buffer->gso_segs; |
843 | 843 | ||
844 | #ifdef CONFIG_IXGBE_PTP | ||
845 | if (unlikely(tx_buffer->tx_flags & IXGBE_TX_FLAGS_TSTAMP)) | 844 | if (unlikely(tx_buffer->tx_flags & IXGBE_TX_FLAGS_TSTAMP)) |
846 | ixgbe_ptp_tx_hwtstamp(q_vector, tx_buffer->skb); | 845 | ixgbe_ptp_tx_hwtstamp(q_vector, tx_buffer->skb); |
847 | #endif | ||
848 | 846 | ||
849 | /* free the skb */ | 847 | /* free the skb */ |
850 | dev_kfree_skb_any(tx_buffer->skb); | 848 | dev_kfree_skb_any(tx_buffer->skb); |
@@ -1432,9 +1430,7 @@ static void ixgbe_process_skb_fields(struct ixgbe_ring *rx_ring, | |||
1432 | 1430 | ||
1433 | ixgbe_rx_checksum(rx_ring, rx_desc, skb); | 1431 | ixgbe_rx_checksum(rx_ring, rx_desc, skb); |
1434 | 1432 | ||
1435 | #ifdef CONFIG_IXGBE_PTP | ||
1436 | ixgbe_ptp_rx_hwtstamp(rx_ring->q_vector, rx_desc, skb); | 1433 | ixgbe_ptp_rx_hwtstamp(rx_ring->q_vector, rx_desc, skb); |
1437 | #endif | ||
1438 | 1434 | ||
1439 | if ((dev->features & NETIF_F_HW_VLAN_RX) && | 1435 | if ((dev->features & NETIF_F_HW_VLAN_RX) && |
1440 | ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_VP)) { | 1436 | ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_VP)) { |
@@ -2386,10 +2382,8 @@ static inline void ixgbe_irq_enable(struct ixgbe_adapter *adapter, bool queues, | |||
2386 | break; | 2382 | break; |
2387 | } | 2383 | } |
2388 | 2384 | ||
2389 | #ifdef CONFIG_IXGBE_PTP | ||
2390 | if (adapter->hw.mac.type == ixgbe_mac_X540) | 2385 | if (adapter->hw.mac.type == ixgbe_mac_X540) |
2391 | mask |= IXGBE_EIMS_TIMESYNC; | 2386 | mask |= IXGBE_EIMS_TIMESYNC; |
2392 | #endif | ||
2393 | 2387 | ||
2394 | if ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) && | 2388 | if ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) && |
2395 | !(adapter->flags2 & IXGBE_FLAG2_FDIR_REQUIRES_REINIT)) | 2389 | !(adapter->flags2 & IXGBE_FLAG2_FDIR_REQUIRES_REINIT)) |
@@ -2455,10 +2449,8 @@ static irqreturn_t ixgbe_msix_other(int irq, void *data) | |||
2455 | 2449 | ||
2456 | ixgbe_check_fan_failure(adapter, eicr); | 2450 | ixgbe_check_fan_failure(adapter, eicr); |
2457 | 2451 | ||
2458 | #ifdef CONFIG_IXGBE_PTP | ||
2459 | if (unlikely(eicr & IXGBE_EICR_TIMESYNC)) | 2452 | if (unlikely(eicr & IXGBE_EICR_TIMESYNC)) |
2460 | ixgbe_ptp_check_pps_event(adapter, eicr); | 2453 | ixgbe_ptp_check_pps_event(adapter, eicr); |
2461 | #endif | ||
2462 | 2454 | ||
2463 | /* re-enable the original interrupt state, no lsc, no queues */ | 2455 | /* re-enable the original interrupt state, no lsc, no queues */ |
2464 | if (!test_bit(__IXGBE_DOWN, &adapter->state)) | 2456 | if (!test_bit(__IXGBE_DOWN, &adapter->state)) |
@@ -2650,10 +2642,8 @@ static irqreturn_t ixgbe_intr(int irq, void *data) | |||
2650 | } | 2642 | } |
2651 | 2643 | ||
2652 | ixgbe_check_fan_failure(adapter, eicr); | 2644 | ixgbe_check_fan_failure(adapter, eicr); |
2653 | #ifdef CONFIG_IXGBE_PTP | ||
2654 | if (unlikely(eicr & IXGBE_EICR_TIMESYNC)) | 2645 | if (unlikely(eicr & IXGBE_EICR_TIMESYNC)) |
2655 | ixgbe_ptp_check_pps_event(adapter, eicr); | 2646 | ixgbe_ptp_check_pps_event(adapter, eicr); |
2656 | #endif | ||
2657 | 2647 | ||
2658 | /* would disable interrupts here but EIAM disabled it */ | 2648 | /* would disable interrupts here but EIAM disabled it */ |
2659 | napi_schedule(&q_vector->napi); | 2649 | napi_schedule(&q_vector->napi); |
@@ -4251,10 +4241,8 @@ void ixgbe_reset(struct ixgbe_adapter *adapter) | |||
4251 | if (hw->mac.san_mac_rar_index) | 4241 | if (hw->mac.san_mac_rar_index) |
4252 | hw->mac.ops.set_vmdq_san_mac(hw, VMDQ_P(0)); | 4242 | hw->mac.ops.set_vmdq_san_mac(hw, VMDQ_P(0)); |
4253 | 4243 | ||
4254 | #ifdef CONFIG_IXGBE_PTP | ||
4255 | if (adapter->flags2 & IXGBE_FLAG2_PTP_ENABLED) | 4244 | if (adapter->flags2 & IXGBE_FLAG2_PTP_ENABLED) |
4256 | ixgbe_ptp_reset(adapter); | 4245 | ixgbe_ptp_reset(adapter); |
4257 | #endif | ||
4258 | } | 4246 | } |
4259 | 4247 | ||
4260 | /** | 4248 | /** |
@@ -4961,9 +4949,7 @@ static int ixgbe_open(struct net_device *netdev) | |||
4961 | if (err) | 4949 | if (err) |
4962 | goto err_set_queues; | 4950 | goto err_set_queues; |
4963 | 4951 | ||
4964 | #ifdef CONFIG_IXGBE_PTP | ||
4965 | ixgbe_ptp_init(adapter); | 4952 | ixgbe_ptp_init(adapter); |
4966 | #endif /* CONFIG_IXGBE_PTP*/ | ||
4967 | 4953 | ||
4968 | ixgbe_up_complete(adapter); | 4954 | ixgbe_up_complete(adapter); |
4969 | 4955 | ||
@@ -4996,9 +4982,7 @@ static int ixgbe_close(struct net_device *netdev) | |||
4996 | { | 4982 | { |
4997 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | 4983 | struct ixgbe_adapter *adapter = netdev_priv(netdev); |
4998 | 4984 | ||
4999 | #ifdef CONFIG_IXGBE_PTP | ||
5000 | ixgbe_ptp_stop(adapter); | 4985 | ixgbe_ptp_stop(adapter); |
5001 | #endif | ||
5002 | 4986 | ||
5003 | ixgbe_down(adapter); | 4987 | ixgbe_down(adapter); |
5004 | ixgbe_free_irq(adapter); | 4988 | ixgbe_free_irq(adapter); |
@@ -5561,10 +5545,8 @@ static void ixgbe_watchdog_link_is_up(struct ixgbe_adapter *adapter) | |||
5561 | break; | 5545 | break; |
5562 | } | 5546 | } |
5563 | 5547 | ||
5564 | #ifdef CONFIG_IXGBE_PTP | ||
5565 | if (adapter->flags2 & IXGBE_FLAG2_PTP_ENABLED) | 5548 | if (adapter->flags2 & IXGBE_FLAG2_PTP_ENABLED) |
5566 | ixgbe_ptp_start_cyclecounter(adapter); | 5549 | ixgbe_ptp_start_cyclecounter(adapter); |
5567 | #endif | ||
5568 | 5550 | ||
5569 | e_info(drv, "NIC Link is Up %s, Flow Control: %s\n", | 5551 | e_info(drv, "NIC Link is Up %s, Flow Control: %s\n", |
5570 | (link_speed == IXGBE_LINK_SPEED_10GB_FULL ? | 5552 | (link_speed == IXGBE_LINK_SPEED_10GB_FULL ? |
@@ -5609,10 +5591,8 @@ static void ixgbe_watchdog_link_is_down(struct ixgbe_adapter *adapter) | |||
5609 | if (ixgbe_is_sfp(hw) && hw->mac.type == ixgbe_mac_82598EB) | 5591 | if (ixgbe_is_sfp(hw) && hw->mac.type == ixgbe_mac_82598EB) |
5610 | adapter->flags2 |= IXGBE_FLAG2_SEARCH_FOR_SFP; | 5592 | adapter->flags2 |= IXGBE_FLAG2_SEARCH_FOR_SFP; |
5611 | 5593 | ||
5612 | #ifdef CONFIG_IXGBE_PTP | ||
5613 | if (adapter->flags2 & IXGBE_FLAG2_PTP_ENABLED) | 5594 | if (adapter->flags2 & IXGBE_FLAG2_PTP_ENABLED) |
5614 | ixgbe_ptp_start_cyclecounter(adapter); | 5595 | ixgbe_ptp_start_cyclecounter(adapter); |
5615 | #endif | ||
5616 | 5596 | ||
5617 | e_info(drv, "NIC Link is Down\n"); | 5597 | e_info(drv, "NIC Link is Down\n"); |
5618 | netif_carrier_off(netdev); | 5598 | netif_carrier_off(netdev); |
@@ -5917,9 +5897,7 @@ static void ixgbe_service_task(struct work_struct *work) | |||
5917 | ixgbe_watchdog_subtask(adapter); | 5897 | ixgbe_watchdog_subtask(adapter); |
5918 | ixgbe_fdir_reinit_subtask(adapter); | 5898 | ixgbe_fdir_reinit_subtask(adapter); |
5919 | ixgbe_check_hang_subtask(adapter); | 5899 | ixgbe_check_hang_subtask(adapter); |
5920 | #ifdef CONFIG_IXGBE_PTP | ||
5921 | ixgbe_ptp_overflow_check(adapter); | 5900 | ixgbe_ptp_overflow_check(adapter); |
5922 | #endif | ||
5923 | 5901 | ||
5924 | ixgbe_service_event_complete(adapter); | 5902 | ixgbe_service_event_complete(adapter); |
5925 | } | 5903 | } |
@@ -6072,10 +6050,8 @@ static __le32 ixgbe_tx_cmd_type(u32 tx_flags) | |||
6072 | if (tx_flags & IXGBE_TX_FLAGS_HW_VLAN) | 6050 | if (tx_flags & IXGBE_TX_FLAGS_HW_VLAN) |
6073 | cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_VLE); | 6051 | cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_VLE); |
6074 | 6052 | ||
6075 | #ifdef CONFIG_IXGBE_PTP | ||
6076 | if (tx_flags & IXGBE_TX_FLAGS_TSTAMP) | 6053 | if (tx_flags & IXGBE_TX_FLAGS_TSTAMP) |
6077 | cmd_type |= cpu_to_le32(IXGBE_ADVTXD_MAC_TSTAMP); | 6054 | cmd_type |= cpu_to_le32(IXGBE_ADVTXD_MAC_TSTAMP); |
6078 | #endif | ||
6079 | 6055 | ||
6080 | /* set segmentation enable bits for TSO/FSO */ | 6056 | /* set segmentation enable bits for TSO/FSO */ |
6081 | #ifdef IXGBE_FCOE | 6057 | #ifdef IXGBE_FCOE |
@@ -6477,12 +6453,10 @@ netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *skb, | |||
6477 | 6453 | ||
6478 | skb_tx_timestamp(skb); | 6454 | skb_tx_timestamp(skb); |
6479 | 6455 | ||
6480 | #ifdef CONFIG_IXGBE_PTP | ||
6481 | if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) { | 6456 | if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) { |
6482 | skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; | 6457 | skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS; |
6483 | tx_flags |= IXGBE_TX_FLAGS_TSTAMP; | 6458 | tx_flags |= IXGBE_TX_FLAGS_TSTAMP; |
6484 | } | 6459 | } |
6485 | #endif | ||
6486 | 6460 | ||
6487 | #ifdef CONFIG_PCI_IOV | 6461 | #ifdef CONFIG_PCI_IOV |
6488 | /* | 6462 | /* |
@@ -6632,10 +6606,8 @@ static int ixgbe_ioctl(struct net_device *netdev, struct ifreq *req, int cmd) | |||
6632 | struct ixgbe_adapter *adapter = netdev_priv(netdev); | 6606 | struct ixgbe_adapter *adapter = netdev_priv(netdev); |
6633 | 6607 | ||
6634 | switch (cmd) { | 6608 | switch (cmd) { |
6635 | #ifdef CONFIG_IXGBE_PTP | ||
6636 | case SIOCSHWTSTAMP: | 6609 | case SIOCSHWTSTAMP: |
6637 | return ixgbe_ptp_hwtstamp_ioctl(adapter, req, cmd); | 6610 | return ixgbe_ptp_hwtstamp_ioctl(adapter, req, cmd); |
6638 | #endif | ||
6639 | default: | 6611 | default: |
6640 | return mdio_mii_ioctl(&adapter->hw.phy.mdio, if_mii(req), cmd); | 6612 | return mdio_mii_ioctl(&adapter->hw.phy.mdio, if_mii(req), cmd); |
6641 | } | 6613 | } |
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig index d0e36f2b6fb..00bc4fc968c 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig +++ b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig | |||
@@ -20,17 +20,3 @@ config PCH_GBE | |||
20 | purpose use. | 20 | purpose use. |
21 | ML7223/ML7831 is companion chip for Intel Atom E6xx series. | 21 | ML7223/ML7831 is companion chip for Intel Atom E6xx series. |
22 | ML7223/ML7831 is completely compatible for Intel EG20T PCH. | 22 | ML7223/ML7831 is completely compatible for Intel EG20T PCH. |
23 | |||
24 | if PCH_GBE | ||
25 | |||
26 | config PCH_PTP | ||
27 | bool "PCH PTP clock support" | ||
28 | default n | ||
29 | select PTP_1588_CLOCK | ||
30 | select PTP_1588_CLOCK_PCH | ||
31 | ---help--- | ||
32 | Say Y here if you want to use Precision Time Protocol (PTP) in the | ||
33 | driver. PTP is a method to precisely synchronize distributed clocks | ||
34 | over Ethernet networks. | ||
35 | |||
36 | endif # PCH_GBE | ||
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h index b07311eaa69..7fb7e178c74 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h | |||
@@ -649,7 +649,6 @@ extern void pch_gbe_free_tx_resources(struct pch_gbe_adapter *adapter, | |||
649 | extern void pch_gbe_free_rx_resources(struct pch_gbe_adapter *adapter, | 649 | extern void pch_gbe_free_rx_resources(struct pch_gbe_adapter *adapter, |
650 | struct pch_gbe_rx_ring *rx_ring); | 650 | struct pch_gbe_rx_ring *rx_ring); |
651 | extern void pch_gbe_update_stats(struct pch_gbe_adapter *adapter); | 651 | extern void pch_gbe_update_stats(struct pch_gbe_adapter *adapter); |
652 | #ifdef CONFIG_PCH_PTP | ||
653 | extern u32 pch_ch_control_read(struct pci_dev *pdev); | 652 | extern u32 pch_ch_control_read(struct pci_dev *pdev); |
654 | extern void pch_ch_control_write(struct pci_dev *pdev, u32 val); | 653 | extern void pch_ch_control_write(struct pci_dev *pdev, u32 val); |
655 | extern u32 pch_ch_event_read(struct pci_dev *pdev); | 654 | extern u32 pch_ch_event_read(struct pci_dev *pdev); |
@@ -659,7 +658,6 @@ extern u32 pch_src_uuid_hi_read(struct pci_dev *pdev); | |||
659 | extern u64 pch_rx_snap_read(struct pci_dev *pdev); | 658 | extern u64 pch_rx_snap_read(struct pci_dev *pdev); |
660 | extern u64 pch_tx_snap_read(struct pci_dev *pdev); | 659 | extern u64 pch_tx_snap_read(struct pci_dev *pdev); |
661 | extern int pch_set_station_address(u8 *addr, struct pci_dev *pdev); | 660 | extern int pch_set_station_address(u8 *addr, struct pci_dev *pdev); |
662 | #endif | ||
663 | 661 | ||
664 | /* pch_gbe_param.c */ | 662 | /* pch_gbe_param.c */ |
665 | extern void pch_gbe_check_options(struct pch_gbe_adapter *adapter); | 663 | extern void pch_gbe_check_options(struct pch_gbe_adapter *adapter); |
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c index b2a94d02a52..499249a15e8 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | |||
@@ -21,10 +21,8 @@ | |||
21 | #include "pch_gbe.h" | 21 | #include "pch_gbe.h" |
22 | #include "pch_gbe_api.h" | 22 | #include "pch_gbe_api.h" |
23 | #include <linux/module.h> | 23 | #include <linux/module.h> |
24 | #ifdef CONFIG_PCH_PTP | ||
25 | #include <linux/net_tstamp.h> | 24 | #include <linux/net_tstamp.h> |
26 | #include <linux/ptp_classify.h> | 25 | #include <linux/ptp_classify.h> |
27 | #endif | ||
28 | 26 | ||
29 | #define DRV_VERSION "1.01" | 27 | #define DRV_VERSION "1.01" |
30 | const char pch_driver_version[] = DRV_VERSION; | 28 | const char pch_driver_version[] = DRV_VERSION; |
@@ -98,7 +96,6 @@ const char pch_driver_version[] = DRV_VERSION; | |||
98 | 96 | ||
99 | #define PCH_GBE_INT_DISABLE_ALL 0 | 97 | #define PCH_GBE_INT_DISABLE_ALL 0 |
100 | 98 | ||
101 | #ifdef CONFIG_PCH_PTP | ||
102 | /* Macros for ieee1588 */ | 99 | /* Macros for ieee1588 */ |
103 | /* 0x40 Time Synchronization Channel Control Register Bits */ | 100 | /* 0x40 Time Synchronization Channel Control Register Bits */ |
104 | #define MASTER_MODE (1<<0) | 101 | #define MASTER_MODE (1<<0) |
@@ -113,7 +110,6 @@ const char pch_driver_version[] = DRV_VERSION; | |||
113 | 110 | ||
114 | #define PTP_L4_MULTICAST_SA "01:00:5e:00:01:81" | 111 | #define PTP_L4_MULTICAST_SA "01:00:5e:00:01:81" |
115 | #define PTP_L2_MULTICAST_SA "01:1b:19:00:00:00" | 112 | #define PTP_L2_MULTICAST_SA "01:1b:19:00:00:00" |
116 | #endif | ||
117 | 113 | ||
118 | static unsigned int copybreak __read_mostly = PCH_GBE_COPYBREAK_DEFAULT; | 114 | static unsigned int copybreak __read_mostly = PCH_GBE_COPYBREAK_DEFAULT; |
119 | 115 | ||
@@ -122,7 +118,6 @@ static void pch_gbe_mdio_write(struct net_device *netdev, int addr, int reg, | |||
122 | int data); | 118 | int data); |
123 | static void pch_gbe_set_multi(struct net_device *netdev); | 119 | static void pch_gbe_set_multi(struct net_device *netdev); |
124 | 120 | ||
125 | #ifdef CONFIG_PCH_PTP | ||
126 | static struct sock_filter ptp_filter[] = { | 121 | static struct sock_filter ptp_filter[] = { |
127 | PTP_FILTER | 122 | PTP_FILTER |
128 | }; | 123 | }; |
@@ -291,7 +286,6 @@ static int hwtstamp_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) | |||
291 | 286 | ||
292 | return copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg)) ? -EFAULT : 0; | 287 | return copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg)) ? -EFAULT : 0; |
293 | } | 288 | } |
294 | #endif | ||
295 | 289 | ||
296 | inline void pch_gbe_mac_load_mac_addr(struct pch_gbe_hw *hw) | 290 | inline void pch_gbe_mac_load_mac_addr(struct pch_gbe_hw *hw) |
297 | { | 291 | { |
@@ -1261,9 +1255,7 @@ static void pch_gbe_tx_queue(struct pch_gbe_adapter *adapter, | |||
1261 | (int)sizeof(struct pch_gbe_tx_desc) * ring_num, | 1255 | (int)sizeof(struct pch_gbe_tx_desc) * ring_num, |
1262 | &hw->reg->TX_DSC_SW_P); | 1256 | &hw->reg->TX_DSC_SW_P); |
1263 | 1257 | ||
1264 | #ifdef CONFIG_PCH_PTP | ||
1265 | pch_tx_timestamp(adapter, skb); | 1258 | pch_tx_timestamp(adapter, skb); |
1266 | #endif | ||
1267 | 1259 | ||
1268 | dev_kfree_skb_any(skb); | 1260 | dev_kfree_skb_any(skb); |
1269 | } | 1261 | } |
@@ -1771,9 +1763,7 @@ pch_gbe_clean_rx(struct pch_gbe_adapter *adapter, | |||
1771 | /* Write meta date of skb */ | 1763 | /* Write meta date of skb */ |
1772 | skb_put(skb, length); | 1764 | skb_put(skb, length); |
1773 | 1765 | ||
1774 | #ifdef CONFIG_PCH_PTP | ||
1775 | pch_rx_timestamp(adapter, skb); | 1766 | pch_rx_timestamp(adapter, skb); |
1776 | #endif | ||
1777 | 1767 | ||
1778 | skb->protocol = eth_type_trans(skb, netdev); | 1768 | skb->protocol = eth_type_trans(skb, netdev); |
1779 | if (tcp_ip_status & PCH_GBE_RXD_ACC_STAT_TCPIPOK) | 1769 | if (tcp_ip_status & PCH_GBE_RXD_ACC_STAT_TCPIPOK) |
@@ -2369,10 +2359,8 @@ static int pch_gbe_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) | |||
2369 | 2359 | ||
2370 | pr_debug("cmd : 0x%04x\n", cmd); | 2360 | pr_debug("cmd : 0x%04x\n", cmd); |
2371 | 2361 | ||
2372 | #ifdef CONFIG_PCH_PTP | ||
2373 | if (cmd == SIOCSHWTSTAMP) | 2362 | if (cmd == SIOCSHWTSTAMP) |
2374 | return hwtstamp_ioctl(netdev, ifr, cmd); | 2363 | return hwtstamp_ioctl(netdev, ifr, cmd); |
2375 | #endif | ||
2376 | 2364 | ||
2377 | return generic_mii_ioctl(&adapter->mii, if_mii(ifr), cmd, NULL); | 2365 | return generic_mii_ioctl(&adapter->mii, if_mii(ifr), cmd, NULL); |
2378 | } | 2366 | } |
@@ -2665,14 +2653,12 @@ static int pch_gbe_probe(struct pci_dev *pdev, | |||
2665 | goto err_free_netdev; | 2653 | goto err_free_netdev; |
2666 | } | 2654 | } |
2667 | 2655 | ||
2668 | #ifdef CONFIG_PCH_PTP | ||
2669 | adapter->ptp_pdev = pci_get_bus_and_slot(adapter->pdev->bus->number, | 2656 | adapter->ptp_pdev = pci_get_bus_and_slot(adapter->pdev->bus->number, |
2670 | PCI_DEVFN(12, 4)); | 2657 | PCI_DEVFN(12, 4)); |
2671 | if (ptp_filter_init(ptp_filter, ARRAY_SIZE(ptp_filter))) { | 2658 | if (ptp_filter_init(ptp_filter, ARRAY_SIZE(ptp_filter))) { |
2672 | pr_err("Bad ptp filter\n"); | 2659 | pr_err("Bad ptp filter\n"); |
2673 | return -EINVAL; | 2660 | return -EINVAL; |
2674 | } | 2661 | } |
2675 | #endif | ||
2676 | 2662 | ||
2677 | netdev->netdev_ops = &pch_gbe_netdev_ops; | 2663 | netdev->netdev_ops = &pch_gbe_netdev_ops; |
2678 | netdev->watchdog_timeo = PCH_GBE_WATCHDOG_PERIOD; | 2664 | netdev->watchdog_timeo = PCH_GBE_WATCHDOG_PERIOD; |
diff --git a/drivers/net/ethernet/sfc/Kconfig b/drivers/net/ethernet/sfc/Kconfig index 25906c1d1b1..fb3cbc27063 100644 --- a/drivers/net/ethernet/sfc/Kconfig +++ b/drivers/net/ethernet/sfc/Kconfig | |||
@@ -34,10 +34,3 @@ config SFC_SRIOV | |||
34 | This enables support for the SFC9000 I/O Virtualization | 34 | This enables support for the SFC9000 I/O Virtualization |
35 | features, allowing accelerated network performance in | 35 | features, allowing accelerated network performance in |
36 | virtualized environments. | 36 | virtualized environments. |
37 | config SFC_PTP | ||
38 | bool "Solarflare SFC9000-family PTP support" | ||
39 | depends on SFC && PTP_1588_CLOCK && !(SFC=y && PTP_1588_CLOCK=m) | ||
40 | default y | ||
41 | ---help--- | ||
42 | This enables support for the Precision Time Protocol (PTP) | ||
43 | on SFC9000-family NICs | ||
diff --git a/drivers/net/ethernet/sfc/Makefile b/drivers/net/ethernet/sfc/Makefile index e11f2ecf69d..945bf06e69e 100644 --- a/drivers/net/ethernet/sfc/Makefile +++ b/drivers/net/ethernet/sfc/Makefile | |||
@@ -2,9 +2,8 @@ sfc-y += efx.o nic.o falcon.o siena.o tx.o rx.o filter.o \ | |||
2 | falcon_xmac.o mcdi_mac.o \ | 2 | falcon_xmac.o mcdi_mac.o \ |
3 | selftest.o ethtool.o qt202x_phy.o mdio_10g.o \ | 3 | selftest.o ethtool.o qt202x_phy.o mdio_10g.o \ |
4 | tenxpress.o txc43128_phy.o falcon_boards.o \ | 4 | tenxpress.o txc43128_phy.o falcon_boards.o \ |
5 | mcdi.o mcdi_phy.o mcdi_mon.o | 5 | mcdi.o mcdi_phy.o mcdi_mon.o ptp.o |
6 | sfc-$(CONFIG_SFC_MTD) += mtd.o | 6 | sfc-$(CONFIG_SFC_MTD) += mtd.o |
7 | sfc-$(CONFIG_SFC_SRIOV) += siena_sriov.o | 7 | sfc-$(CONFIG_SFC_SRIOV) += siena_sriov.o |
8 | sfc-$(CONFIG_SFC_PTP) += ptp.o | ||
9 | 8 | ||
10 | obj-$(CONFIG_SFC) += sfc.o | 9 | obj-$(CONFIG_SFC) += sfc.o |
diff --git a/drivers/net/ethernet/sfc/net_driver.h b/drivers/net/ethernet/sfc/net_driver.h index 576a3109116..2487f582ab0 100644 --- a/drivers/net/ethernet/sfc/net_driver.h +++ b/drivers/net/ethernet/sfc/net_driver.h | |||
@@ -868,9 +868,7 @@ struct efx_nic { | |||
868 | struct work_struct peer_work; | 868 | struct work_struct peer_work; |
869 | #endif | 869 | #endif |
870 | 870 | ||
871 | #ifdef CONFIG_SFC_PTP | ||
872 | struct efx_ptp_data *ptp_data; | 871 | struct efx_ptp_data *ptp_data; |
873 | #endif | ||
874 | 872 | ||
875 | /* The following fields may be written more often */ | 873 | /* The following fields may be written more often */ |
876 | 874 | ||
diff --git a/drivers/net/ethernet/sfc/nic.h b/drivers/net/ethernet/sfc/nic.h index 438cef11f72..7a9647a3c56 100644 --- a/drivers/net/ethernet/sfc/nic.h +++ b/drivers/net/ethernet/sfc/nic.h | |||
@@ -252,7 +252,6 @@ extern int efx_sriov_set_vf_spoofchk(struct net_device *net_dev, int vf, | |||
252 | bool spoofchk); | 252 | bool spoofchk); |
253 | 253 | ||
254 | struct ethtool_ts_info; | 254 | struct ethtool_ts_info; |
255 | #ifdef CONFIG_SFC_PTP | ||
256 | extern void efx_ptp_probe(struct efx_nic *efx); | 255 | extern void efx_ptp_probe(struct efx_nic *efx); |
257 | extern int efx_ptp_ioctl(struct efx_nic *efx, struct ifreq *ifr, int cmd); | 256 | extern int efx_ptp_ioctl(struct efx_nic *efx, struct ifreq *ifr, int cmd); |
258 | extern int efx_ptp_get_ts_info(struct net_device *net_dev, | 257 | extern int efx_ptp_get_ts_info(struct net_device *net_dev, |
@@ -260,31 +259,6 @@ extern int efx_ptp_get_ts_info(struct net_device *net_dev, | |||
260 | extern bool efx_ptp_is_ptp_tx(struct efx_nic *efx, struct sk_buff *skb); | 259 | extern bool efx_ptp_is_ptp_tx(struct efx_nic *efx, struct sk_buff *skb); |
261 | extern int efx_ptp_tx(struct efx_nic *efx, struct sk_buff *skb); | 260 | extern int efx_ptp_tx(struct efx_nic *efx, struct sk_buff *skb); |
262 | extern void efx_ptp_event(struct efx_nic *efx, efx_qword_t *ev); | 261 | extern void efx_ptp_event(struct efx_nic *efx, efx_qword_t *ev); |
263 | #else | ||
264 | static inline void efx_ptp_probe(struct efx_nic *efx) {} | ||
265 | static inline int efx_ptp_ioctl(struct efx_nic *efx, struct ifreq *ifr, int cmd) | ||
266 | { | ||
267 | return -EOPNOTSUPP; | ||
268 | } | ||
269 | static inline int efx_ptp_get_ts_info(struct net_device *net_dev, | ||
270 | struct ethtool_ts_info *ts_info) | ||
271 | { | ||
272 | ts_info->so_timestamping = (SOF_TIMESTAMPING_SOFTWARE | | ||
273 | SOF_TIMESTAMPING_RX_SOFTWARE); | ||
274 | ts_info->phc_index = -1; | ||
275 | |||
276 | return 0; | ||
277 | } | ||
278 | static inline bool efx_ptp_is_ptp_tx(struct efx_nic *efx, struct sk_buff *skb) | ||
279 | { | ||
280 | return false; | ||
281 | } | ||
282 | static inline int efx_ptp_tx(struct efx_nic *efx, struct sk_buff *skb) | ||
283 | { | ||
284 | return NETDEV_TX_OK; | ||
285 | } | ||
286 | static inline void efx_ptp_event(struct efx_nic *efx, efx_qword_t *ev) {} | ||
287 | #endif | ||
288 | 262 | ||
289 | extern const struct efx_nic_type falcon_a1_nic_type; | 263 | extern const struct efx_nic_type falcon_a1_nic_type; |
290 | extern const struct efx_nic_type falcon_b0_nic_type; | 264 | extern const struct efx_nic_type falcon_b0_nic_type; |
diff --git a/drivers/ptp/Kconfig b/drivers/ptp/Kconfig index 131ef03fd11..70c5836ebfc 100644 --- a/drivers/ptp/Kconfig +++ b/drivers/ptp/Kconfig | |||
@@ -25,8 +25,9 @@ config PTP_1588_CLOCK | |||
25 | 25 | ||
26 | config PTP_1588_CLOCK_GIANFAR | 26 | config PTP_1588_CLOCK_GIANFAR |
27 | tristate "Freescale eTSEC as PTP clock" | 27 | tristate "Freescale eTSEC as PTP clock" |
28 | depends on PTP_1588_CLOCK | ||
29 | depends on GIANFAR | 28 | depends on GIANFAR |
29 | select PTP_1588_CLOCK | ||
30 | default y | ||
30 | help | 31 | help |
31 | This driver adds support for using the eTSEC as a PTP | 32 | This driver adds support for using the eTSEC as a PTP |
32 | clock. This clock is only useful if your PTP programs are | 33 | clock. This clock is only useful if your PTP programs are |
@@ -38,8 +39,9 @@ config PTP_1588_CLOCK_GIANFAR | |||
38 | 39 | ||
39 | config PTP_1588_CLOCK_IXP46X | 40 | config PTP_1588_CLOCK_IXP46X |
40 | tristate "Intel IXP46x as PTP clock" | 41 | tristate "Intel IXP46x as PTP clock" |
41 | depends on PTP_1588_CLOCK | ||
42 | depends on IXP4XX_ETH | 42 | depends on IXP4XX_ETH |
43 | select PTP_1588_CLOCK | ||
44 | default y | ||
43 | help | 45 | help |
44 | This driver adds support for using the IXP46X as a PTP | 46 | This driver adds support for using the IXP46X as a PTP |
45 | clock. This clock is only useful if your PTP programs are | 47 | clock. This clock is only useful if your PTP programs are |
@@ -50,13 +52,13 @@ config PTP_1588_CLOCK_IXP46X | |||
50 | will be called ptp_ixp46x. | 52 | will be called ptp_ixp46x. |
51 | 53 | ||
52 | comment "Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks." | 54 | comment "Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks." |
53 | depends on PTP_1588_CLOCK && (PHYLIB=n || NETWORK_PHY_TIMESTAMPING=n) | 55 | depends on PHYLIB=n || NETWORK_PHY_TIMESTAMPING=n |
54 | 56 | ||
55 | config DP83640_PHY | 57 | config DP83640_PHY |
56 | tristate "Driver for the National Semiconductor DP83640 PHYTER" | 58 | tristate "Driver for the National Semiconductor DP83640 PHYTER" |
57 | depends on PTP_1588_CLOCK | ||
58 | depends on NETWORK_PHY_TIMESTAMPING | 59 | depends on NETWORK_PHY_TIMESTAMPING |
59 | depends on PHYLIB | 60 | depends on PHYLIB |
61 | select PTP_1588_CLOCK | ||
60 | ---help--- | 62 | ---help--- |
61 | Supports the DP83640 PHYTER with IEEE 1588 features. | 63 | Supports the DP83640 PHYTER with IEEE 1588 features. |
62 | 64 | ||
@@ -70,8 +72,9 @@ config DP83640_PHY | |||
70 | 72 | ||
71 | config PTP_1588_CLOCK_PCH | 73 | config PTP_1588_CLOCK_PCH |
72 | tristate "Intel PCH EG20T as PTP clock" | 74 | tristate "Intel PCH EG20T as PTP clock" |
73 | depends on PTP_1588_CLOCK | ||
74 | depends on PCH_GBE | 75 | depends on PCH_GBE |
76 | select PTP_1588_CLOCK | ||
77 | default y | ||
75 | help | 78 | help |
76 | This driver adds support for using the PCH EG20T as a PTP | 79 | This driver adds support for using the PCH EG20T as a PTP |
77 | clock. The hardware supports time stamping of PTP packets | 80 | clock. The hardware supports time stamping of PTP packets |