ptp: Enable clock drivers along with associated net/PHY drivers
Where a PTP clock driver is associated with a net or PHY driver, it should be enabled automatically whenever that driver is enabled. Therefore: - Make PTP clock drivers select rather than depending on PTP_1588_CLOCK - Remove separate boolean options for PTP clock drivers that are built as part of net driver modules. (This also fixes cases where the PTP subsystem is wrongly forced to be built-in.) - Set 'default y' for PTP clock drivers that depend on specific net drivers but are built separately Signed-off-by: Ben Hutchings <bhutchings@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
42a7ccef0a
commit
a24006ed12
@@ -34,11 +34,10 @@ obj-$(CONFIG_IXGBE) += ixgbe.o
|
||||
|
||||
ixgbe-objs := ixgbe_main.o ixgbe_common.o ixgbe_ethtool.o ixgbe_debugfs.o\
|
||||
ixgbe_82599.o ixgbe_82598.o ixgbe_phy.o ixgbe_sriov.o \
|
||||
ixgbe_mbx.o ixgbe_x540.o ixgbe_lib.o
|
||||
ixgbe_mbx.o ixgbe_x540.o ixgbe_lib.o ixgbe_ptp.o
|
||||
|
||||
ixgbe-$(CONFIG_IXGBE_DCB) += ixgbe_dcb.o ixgbe_dcb_82598.o \
|
||||
ixgbe_dcb_82599.o ixgbe_dcb_nl.o
|
||||
|
||||
ixgbe-$(CONFIG_IXGBE_PTP) += ixgbe_ptp.o
|
||||
ixgbe-$(CONFIG_IXGBE_HWMON) += ixgbe_sysfs.o
|
||||
ixgbe-$(CONFIG_FCOE:m=y) += ixgbe_fcoe.o
|
||||
|
@@ -36,11 +36,9 @@
|
||||
#include <linux/aer.h>
|
||||
#include <linux/if_vlan.h>
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/net_tstamp.h>
|
||||
#include <linux/ptp_clock_kernel.h>
|
||||
#endif /* CONFIG_IXGBE_PTP */
|
||||
|
||||
#include "ixgbe_type.h"
|
||||
#include "ixgbe_common.h"
|
||||
@@ -572,7 +570,6 @@ struct ixgbe_adapter {
|
||||
u32 interrupt_event;
|
||||
u32 led_reg;
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
struct ptp_clock *ptp_clock;
|
||||
struct ptp_clock_info ptp_caps;
|
||||
unsigned long last_overflow_check;
|
||||
@@ -581,7 +578,6 @@ struct ixgbe_adapter {
|
||||
struct timecounter tc;
|
||||
int rx_hwtstamp_filter;
|
||||
u32 base_incval;
|
||||
#endif /* CONFIG_IXGBE_PTP */
|
||||
|
||||
/* SR-IOV */
|
||||
DECLARE_BITMAP(active_vfs, IXGBE_MAX_VF_FUNCTIONS);
|
||||
@@ -742,7 +738,6 @@ static inline struct netdev_queue *txring_txq(const struct ixgbe_ring *ring)
|
||||
return netdev_get_tx_queue(ring->netdev, ring->queue_index);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
extern void ixgbe_ptp_init(struct ixgbe_adapter *adapter);
|
||||
extern void ixgbe_ptp_stop(struct ixgbe_adapter *adapter);
|
||||
extern void ixgbe_ptp_overflow_check(struct ixgbe_adapter *adapter);
|
||||
@@ -756,6 +751,5 @@ extern int ixgbe_ptp_hwtstamp_ioctl(struct ixgbe_adapter *adapter,
|
||||
extern void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter);
|
||||
extern void ixgbe_ptp_reset(struct ixgbe_adapter *adapter);
|
||||
extern void ixgbe_ptp_check_pps_event(struct ixgbe_adapter *adapter, u32 eicr);
|
||||
#endif /* CONFIG_IXGBE_PTP */
|
||||
|
||||
#endif /* _IXGBE_H_ */
|
||||
|
@@ -2667,7 +2667,6 @@ static int ixgbe_get_ts_info(struct net_device *dev,
|
||||
struct ixgbe_adapter *adapter = netdev_priv(dev);
|
||||
|
||||
switch (adapter->hw.mac.type) {
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
case ixgbe_mac_X540:
|
||||
case ixgbe_mac_82599EB:
|
||||
info->so_timestamping =
|
||||
@@ -2690,7 +2689,6 @@ static int ixgbe_get_ts_info(struct net_device *dev,
|
||||
(1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) |
|
||||
(1 << HWTSTAMP_FILTER_PTP_V2_EVENT);
|
||||
break;
|
||||
#endif /* CONFIG_IXGBE_PTP */
|
||||
default:
|
||||
return ethtool_op_get_ts_info(dev, info);
|
||||
break;
|
||||
|
@@ -841,10 +841,8 @@ static bool ixgbe_clean_tx_irq(struct ixgbe_q_vector *q_vector,
|
||||
total_bytes += tx_buffer->bytecount;
|
||||
total_packets += tx_buffer->gso_segs;
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
if (unlikely(tx_buffer->tx_flags & IXGBE_TX_FLAGS_TSTAMP))
|
||||
ixgbe_ptp_tx_hwtstamp(q_vector, tx_buffer->skb);
|
||||
#endif
|
||||
|
||||
/* free the skb */
|
||||
dev_kfree_skb_any(tx_buffer->skb);
|
||||
@@ -1432,9 +1430,7 @@ static void ixgbe_process_skb_fields(struct ixgbe_ring *rx_ring,
|
||||
|
||||
ixgbe_rx_checksum(rx_ring, rx_desc, skb);
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
ixgbe_ptp_rx_hwtstamp(rx_ring->q_vector, rx_desc, skb);
|
||||
#endif
|
||||
|
||||
if ((dev->features & NETIF_F_HW_VLAN_RX) &&
|
||||
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,
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
if (adapter->hw.mac.type == ixgbe_mac_X540)
|
||||
mask |= IXGBE_EIMS_TIMESYNC;
|
||||
#endif
|
||||
|
||||
if ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) &&
|
||||
!(adapter->flags2 & IXGBE_FLAG2_FDIR_REQUIRES_REINIT))
|
||||
@@ -2455,10 +2449,8 @@ static irqreturn_t ixgbe_msix_other(int irq, void *data)
|
||||
|
||||
ixgbe_check_fan_failure(adapter, eicr);
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
if (unlikely(eicr & IXGBE_EICR_TIMESYNC))
|
||||
ixgbe_ptp_check_pps_event(adapter, eicr);
|
||||
#endif
|
||||
|
||||
/* re-enable the original interrupt state, no lsc, no queues */
|
||||
if (!test_bit(__IXGBE_DOWN, &adapter->state))
|
||||
@@ -2650,10 +2642,8 @@ static irqreturn_t ixgbe_intr(int irq, void *data)
|
||||
}
|
||||
|
||||
ixgbe_check_fan_failure(adapter, eicr);
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
if (unlikely(eicr & IXGBE_EICR_TIMESYNC))
|
||||
ixgbe_ptp_check_pps_event(adapter, eicr);
|
||||
#endif
|
||||
|
||||
/* would disable interrupts here but EIAM disabled it */
|
||||
napi_schedule(&q_vector->napi);
|
||||
@@ -4251,10 +4241,8 @@ void ixgbe_reset(struct ixgbe_adapter *adapter)
|
||||
if (hw->mac.san_mac_rar_index)
|
||||
hw->mac.ops.set_vmdq_san_mac(hw, VMDQ_P(0));
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
if (adapter->flags2 & IXGBE_FLAG2_PTP_ENABLED)
|
||||
ixgbe_ptp_reset(adapter);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -4961,9 +4949,7 @@ static int ixgbe_open(struct net_device *netdev)
|
||||
if (err)
|
||||
goto err_set_queues;
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
ixgbe_ptp_init(adapter);
|
||||
#endif /* CONFIG_IXGBE_PTP*/
|
||||
|
||||
ixgbe_up_complete(adapter);
|
||||
|
||||
@@ -4996,9 +4982,7 @@ static int ixgbe_close(struct net_device *netdev)
|
||||
{
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
ixgbe_ptp_stop(adapter);
|
||||
#endif
|
||||
|
||||
ixgbe_down(adapter);
|
||||
ixgbe_free_irq(adapter);
|
||||
@@ -5561,10 +5545,8 @@ static void ixgbe_watchdog_link_is_up(struct ixgbe_adapter *adapter)
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
if (adapter->flags2 & IXGBE_FLAG2_PTP_ENABLED)
|
||||
ixgbe_ptp_start_cyclecounter(adapter);
|
||||
#endif
|
||||
|
||||
e_info(drv, "NIC Link is Up %s, Flow Control: %s\n",
|
||||
(link_speed == IXGBE_LINK_SPEED_10GB_FULL ?
|
||||
@@ -5609,10 +5591,8 @@ static void ixgbe_watchdog_link_is_down(struct ixgbe_adapter *adapter)
|
||||
if (ixgbe_is_sfp(hw) && hw->mac.type == ixgbe_mac_82598EB)
|
||||
adapter->flags2 |= IXGBE_FLAG2_SEARCH_FOR_SFP;
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
if (adapter->flags2 & IXGBE_FLAG2_PTP_ENABLED)
|
||||
ixgbe_ptp_start_cyclecounter(adapter);
|
||||
#endif
|
||||
|
||||
e_info(drv, "NIC Link is Down\n");
|
||||
netif_carrier_off(netdev);
|
||||
@@ -5917,9 +5897,7 @@ static void ixgbe_service_task(struct work_struct *work)
|
||||
ixgbe_watchdog_subtask(adapter);
|
||||
ixgbe_fdir_reinit_subtask(adapter);
|
||||
ixgbe_check_hang_subtask(adapter);
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
ixgbe_ptp_overflow_check(adapter);
|
||||
#endif
|
||||
|
||||
ixgbe_service_event_complete(adapter);
|
||||
}
|
||||
@@ -6072,10 +6050,8 @@ static __le32 ixgbe_tx_cmd_type(u32 tx_flags)
|
||||
if (tx_flags & IXGBE_TX_FLAGS_HW_VLAN)
|
||||
cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_VLE);
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
if (tx_flags & IXGBE_TX_FLAGS_TSTAMP)
|
||||
cmd_type |= cpu_to_le32(IXGBE_ADVTXD_MAC_TSTAMP);
|
||||
#endif
|
||||
|
||||
/* set segmentation enable bits for TSO/FSO */
|
||||
#ifdef IXGBE_FCOE
|
||||
@@ -6477,12 +6453,10 @@ netdev_tx_t ixgbe_xmit_frame_ring(struct sk_buff *skb,
|
||||
|
||||
skb_tx_timestamp(skb);
|
||||
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) {
|
||||
skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
|
||||
tx_flags |= IXGBE_TX_FLAGS_TSTAMP;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PCI_IOV
|
||||
/*
|
||||
@@ -6632,10 +6606,8 @@ static int ixgbe_ioctl(struct net_device *netdev, struct ifreq *req, int cmd)
|
||||
struct ixgbe_adapter *adapter = netdev_priv(netdev);
|
||||
|
||||
switch (cmd) {
|
||||
#ifdef CONFIG_IXGBE_PTP
|
||||
case SIOCSHWTSTAMP:
|
||||
return ixgbe_ptp_hwtstamp_ioctl(adapter, req, cmd);
|
||||
#endif
|
||||
default:
|
||||
return mdio_mii_ioctl(&adapter->hw.phy.mdio, if_mii(req), cmd);
|
||||
}
|
||||
|
Reference in New Issue
Block a user