diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igc/igc.h')
| -rw-r--r-- | drivers/net/ethernet/intel/igc/igc.h | 31 | 
1 files changed, 28 insertions, 3 deletions
| diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h index 5d2809dfd06a..25871351730b 100644 --- a/drivers/net/ethernet/intel/igc/igc.h +++ b/drivers/net/ethernet/intel/igc/igc.h @@ -28,6 +28,11 @@ void igc_ethtool_set_ops(struct net_device *);  #define MAX_ETYPE_FILTER		8  #define IGC_RETA_SIZE			128 +/* SDP support */ +#define IGC_N_EXTTS	2 +#define IGC_N_PEROUT	2 +#define IGC_N_SDP	4 +  enum igc_mac_filter_type {  	IGC_MAC_FILTER_TYPE_DST = 0,  	IGC_MAC_FILTER_TYPE_SRC @@ -111,6 +116,8 @@ struct igc_ring {  			struct sk_buff *skb;  		};  	}; + +	struct xdp_rxq_info xdp_rxq;  } ____cacheline_internodealigned_in_smp;  /* Board specific private data structure */ @@ -219,6 +226,16 @@ struct igc_adapter {  	ktime_t ptp_reset_start; /* Reset time in clock mono */  	char fw_version[32]; + +	struct bpf_prog *xdp_prog; + +	bool pps_sys_wrap_on; + +	struct ptp_pin_desc sdp_config[IGC_N_SDP]; +	struct { +		struct timespec64 start; +		struct timespec64 period; +	} perout[IGC_N_PEROUT];  };  void igc_up(struct igc_adapter *adapter); @@ -373,6 +390,8 @@ enum igc_tx_flags {  	/* olinfo flags */  	IGC_TX_FLAGS_IPV4	= 0x10,  	IGC_TX_FLAGS_CSUM	= 0x20, + +	IGC_TX_FLAGS_XDP	= 0x100,  };  enum igc_boards { @@ -395,7 +414,10 @@ enum igc_boards {  struct igc_tx_buffer {  	union igc_adv_tx_desc *next_to_watch;  	unsigned long time_stamp; -	struct sk_buff *skb; +	union { +		struct sk_buff *skb; +		struct xdp_frame *xdpf; +	};  	unsigned int bytecount;  	u16 gso_segs;  	__be16 protocol; @@ -504,6 +526,10 @@ enum igc_ring_flags_t {  #define ring_uses_large_buffer(ring) \  	test_bit(IGC_RING_FLAG_RX_3K_BUFFER, &(ring)->flags) +#define set_ring_uses_large_buffer(ring) \ +	set_bit(IGC_RING_FLAG_RX_3K_BUFFER, &(ring)->flags) +#define clear_ring_uses_large_buffer(ring) \ +	clear_bit(IGC_RING_FLAG_RX_3K_BUFFER, &(ring)->flags)  #define ring_uses_build_skb(ring) \  	test_bit(IGC_RING_FLAG_RX_BUILD_SKB_ENABLED, &(ring)->flags) @@ -547,8 +573,7 @@ void igc_ptp_init(struct igc_adapter *adapter);  void igc_ptp_reset(struct igc_adapter *adapter);  void igc_ptp_suspend(struct igc_adapter *adapter);  void igc_ptp_stop(struct igc_adapter *adapter); -void igc_ptp_rx_pktstamp(struct igc_q_vector *q_vector, void *va, -			 struct sk_buff *skb); +ktime_t igc_ptp_rx_pktstamp(struct igc_adapter *adapter, __le32 *buf);  int igc_ptp_set_ts_config(struct net_device *netdev, struct ifreq *ifr);  int igc_ptp_get_ts_config(struct net_device *netdev, struct ifreq *ifr);  void igc_ptp_tx_hang(struct igc_adapter *adapter); | 
