aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/sfc/net_driver.h
diff options
context:
space:
mode:
authorStuart Hodgson <smhodgson@solarflare.com>2012-09-03 06:09:36 -0400
committerBen Hutchings <bhutchings@solarflare.com>2012-09-18 21:54:12 -0400
commit7c236c43b838221e17220bcb39e8e8d8c7123713 (patch)
tree4ef6fa19edafeddf8280c5086624ae430125be91 /drivers/net/ethernet/sfc/net_driver.h
parent576eda8b08e00cbb0cf29ba777c2cb461c98cbbc (diff)
sfc: Add support for IEEE-1588 PTP
Add PTP IEEE-1588 support and make accesible via the PHC subsystem. This work is based on prior code by Andrew Jackson Signed-off-by: Stuart Hodgson <smhodgson@solarflare.com> [bwh: - Add byte order conversion in efx_ptp_send_times() - Simplify conversion of PPS event times - Add the built-in vs module check to CONFIG_SFC_PTP dependencies] Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Diffstat (limited to 'drivers/net/ethernet/sfc/net_driver.h')
-rw-r--r--drivers/net/ethernet/sfc/net_driver.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/net/ethernet/sfc/net_driver.h b/drivers/net/ethernet/sfc/net_driver.h
index 0f0926e68963..797dbed25d94 100644
--- a/drivers/net/ethernet/sfc/net_driver.h
+++ b/drivers/net/ethernet/sfc/net_driver.h
@@ -56,7 +56,8 @@
56#define EFX_MAX_CHANNELS 32U 56#define EFX_MAX_CHANNELS 32U
57#define EFX_MAX_RX_QUEUES EFX_MAX_CHANNELS 57#define EFX_MAX_RX_QUEUES EFX_MAX_CHANNELS
58#define EFX_EXTRA_CHANNEL_IOV 0 58#define EFX_EXTRA_CHANNEL_IOV 0
59#define EFX_MAX_EXTRA_CHANNELS 1U 59#define EFX_EXTRA_CHANNEL_PTP 1
60#define EFX_MAX_EXTRA_CHANNELS 2U
60 61
61/* Checksum generation is a per-queue option in hardware, so each 62/* Checksum generation is a per-queue option in hardware, so each
62 * queue visible to the networking core is backed by two hardware TX 63 * queue visible to the networking core is backed by two hardware TX
@@ -68,6 +69,9 @@
68#define EFX_TXQ_TYPES 4 69#define EFX_TXQ_TYPES 4
69#define EFX_MAX_TX_QUEUES (EFX_TXQ_TYPES * EFX_MAX_CHANNELS) 70#define EFX_MAX_TX_QUEUES (EFX_TXQ_TYPES * EFX_MAX_CHANNELS)
70 71
72/* Forward declare Precision Time Protocol (PTP) support structure. */
73struct efx_ptp_data;
74
71struct efx_self_tests; 75struct efx_self_tests;
72 76
73/** 77/**
@@ -736,6 +740,7 @@ struct vfdi_status;
736 * %local_addr_list. Protected by %local_lock. 740 * %local_addr_list. Protected by %local_lock.
737 * @local_lock: Mutex protecting %local_addr_list and %local_page_list. 741 * @local_lock: Mutex protecting %local_addr_list and %local_page_list.
738 * @peer_work: Work item to broadcast peer addresses to VMs. 742 * @peer_work: Work item to broadcast peer addresses to VMs.
743 * @ptp_data: PTP state data
739 * @monitor_work: Hardware monitor workitem 744 * @monitor_work: Hardware monitor workitem
740 * @biu_lock: BIU (bus interface unit) lock 745 * @biu_lock: BIU (bus interface unit) lock
741 * @last_irq_cpu: Last CPU to handle a possible test interrupt. This 746 * @last_irq_cpu: Last CPU to handle a possible test interrupt. This
@@ -863,6 +868,10 @@ struct efx_nic {
863 struct work_struct peer_work; 868 struct work_struct peer_work;
864#endif 869#endif
865 870
871#ifdef CONFIG_SFC_PTP
872 struct efx_ptp_data *ptp_data;
873#endif
874
866 /* The following fields may be written more often */ 875 /* The following fields may be written more often */
867 876
868 struct delayed_work monitor_work ____cacheline_aligned_in_smp; 877 struct delayed_work monitor_work ____cacheline_aligned_in_smp;
@@ -1125,5 +1134,13 @@ static inline void clear_bit_le(unsigned nr, unsigned char *addr)
1125#define EFX_MAX_FRAME_LEN(mtu) \ 1134#define EFX_MAX_FRAME_LEN(mtu) \
1126 ((((mtu) + ETH_HLEN + VLAN_HLEN + 4/* FCS */ + 7) & ~7) + 16) 1135 ((((mtu) + ETH_HLEN + VLAN_HLEN + 4/* FCS */ + 7) & ~7) + 16)
1127 1136
1137static inline bool efx_xmit_with_hwtstamp(struct sk_buff *skb)
1138{
1139 return skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP;
1140}
1141static inline void efx_xmit_hwtstamp_pending(struct sk_buff *skb)
1142{
1143 skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
1144}
1128 1145
1129#endif /* EFX_NET_DRIVER_H */ 1146#endif /* EFX_NET_DRIVER_H */