diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igb/igb.h')
| -rw-r--r-- | drivers/net/ethernet/intel/igb/igb.h | 41 | 
1 files changed, 24 insertions, 17 deletions
diff --git a/drivers/net/ethernet/intel/igb/igb.h b/drivers/net/ethernet/intel/igb/igb.h index 9e572dd29ab..8aad230c059 100644 --- a/drivers/net/ethernet/intel/igb/igb.h +++ b/drivers/net/ethernet/intel/igb/igb.h @@ -34,9 +34,11 @@  #include "e1000_mac.h"  #include "e1000_82575.h" +#ifdef CONFIG_IGB_PTP  #include <linux/clocksource.h>  #include <linux/net_tstamp.h>  #include <linux/ptp_clock_kernel.h> +#endif /* CONFIG_IGB_PTP */  #include <linux/bitops.h>  #include <linux/if_vlan.h> @@ -99,7 +101,6 @@ struct vf_data_storage {  	u16 pf_vlan; /* When set, guest VLAN config not allowed. */  	u16 pf_qos;  	u16 tx_rate; -	struct pci_dev *vfdev;  };  #define IGB_VF_FLAG_CTS            0x00000001 /* VF is clear to send data */ @@ -131,9 +132,9 @@ struct vf_data_storage {  #define MAXIMUM_ETHERNET_VLAN_SIZE 1522  /* Supported Rx Buffer Sizes */ -#define IGB_RXBUFFER_512   512 +#define IGB_RXBUFFER_256   256  #define IGB_RXBUFFER_16384 16384 -#define IGB_RX_HDR_LEN     IGB_RXBUFFER_512 +#define IGB_RX_HDR_LEN     IGB_RXBUFFER_256  /* How many Tx Descriptors do we need to call netif_wake_queue ? */  #define IGB_TX_QUEUE_WAKE	16 @@ -167,8 +168,8 @@ struct igb_tx_buffer {  	unsigned int bytecount;  	u16 gso_segs;  	__be16 protocol; -	dma_addr_t dma; -	u32 length; +	DEFINE_DMA_UNMAP_ADDR(dma); +	DEFINE_DMA_UNMAP_LEN(len);  	u32 tx_flags;  }; @@ -212,7 +213,6 @@ struct igb_q_vector {  	struct igb_ring_container rx, tx;  	struct napi_struct napi; -	int numa_node;  	u16 itr_val;  	u8 set_itr; @@ -257,7 +257,6 @@ struct igb_ring {  	};  	/* Items past this point are only used during ring alloc / free */  	dma_addr_t dma;                /* phys address of the ring */ -	int numa_node;                  /* node to alloc ring memory on */  };  enum e1000_ring_flags_t { @@ -342,7 +341,6 @@ struct igb_adapter {  	/* OS defined structs */  	struct pci_dev *pdev; -	struct hwtstamp_config hwtstamp_config;  	spinlock_t stats64_lock;  	struct rtnl_link_stats64 stats64; @@ -373,15 +371,19 @@ struct igb_adapter {  	int vf_rate_link_speed;  	u32 rss_queues;  	u32 wvbr; -	int node;  	u32 *shadow_vfta; +#ifdef CONFIG_IGB_PTP  	struct ptp_clock *ptp_clock; -	struct ptp_clock_info caps; -	struct delayed_work overflow_work; +	struct ptp_clock_info ptp_caps; +	struct delayed_work ptp_overflow_work; +	struct work_struct ptp_tx_work; +	struct sk_buff *ptp_tx_skb;  	spinlock_t tmreg_lock;  	struct cyclecounter cc;  	struct timecounter tc; +#endif /* CONFIG_IGB_PTP */ +  	char fw_version[32];  }; @@ -390,6 +392,7 @@ struct igb_adapter {  #define IGB_FLAG_QUAD_PORT_A       (1 << 2)  #define IGB_FLAG_QUEUE_PAIRS       (1 << 3)  #define IGB_FLAG_DMAC              (1 << 4) +#define IGB_FLAG_PTP               (1 << 5)  /* DMA Coalescing defines */  #define IGB_MIN_TXPBSIZE           20408 @@ -435,13 +438,17 @@ extern void igb_power_up_link(struct igb_adapter *);  extern void igb_set_fw_version(struct igb_adapter *);  #ifdef CONFIG_IGB_PTP  extern void igb_ptp_init(struct igb_adapter *adapter); -extern void igb_ptp_remove(struct igb_adapter *adapter); - -extern void igb_systim_to_hwtstamp(struct igb_adapter *adapter, -				   struct skb_shared_hwtstamps *hwtstamps, -				   u64 systim); +extern void igb_ptp_stop(struct igb_adapter *adapter); +extern void igb_ptp_reset(struct igb_adapter *adapter); +extern void igb_ptp_tx_work(struct work_struct *work); +extern void igb_ptp_tx_hwtstamp(struct igb_adapter *adapter); +extern void igb_ptp_rx_hwtstamp(struct igb_q_vector *q_vector, +				union e1000_adv_rx_desc *rx_desc, +				struct sk_buff *skb); +extern int igb_ptp_hwtstamp_ioctl(struct net_device *netdev, +				  struct ifreq *ifr, int cmd); +#endif /* CONFIG_IGB_PTP */ -#endif  static inline s32 igb_reset_phy(struct e1000_hw *hw)  {  	if (hw->phy.ops.reset)  |