diff options
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/e1000.h')
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/e1000.h | 136 | 
1 files changed, 52 insertions, 84 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h index ad0edd11015..7785240a0da 100644 --- a/drivers/net/ethernet/intel/e1000e/e1000.h +++ b/drivers/net/ethernet/intel/e1000e/e1000.h @@ -1,30 +1,23 @@ -/******************************************************************************* - -  Intel PRO/1000 Linux driver -  Copyright(c) 1999 - 2013 Intel Corporation. - -  This program is free software; you can redistribute it and/or modify it -  under the terms and conditions of the GNU General Public License, -  version 2, as published by the Free Software Foundation. - -  This program is distributed in the hope it will be useful, but WITHOUT -  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for -  more details. - -  You should have received a copy of the GNU General Public License along with -  this program; if not, write to the Free Software Foundation, Inc., -  51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. - -  The full GNU General Public License is included in this distribution in -  the file called "COPYING". - -  Contact Information: -  Linux NICS <linux.nics@intel.com> -  e1000-devel Mailing List <e1000-devel@lists.sourceforge.net> -  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 - -*******************************************************************************/ +/* Intel PRO/1000 Linux driver + * Copyright(c) 1999 - 2014 Intel Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for + * more details. + * + * The full GNU General Public License is included in this distribution in + * the file called "COPYING". + * + * Contact Information: + * Linux NICS <linux.nics@intel.com> + * e1000-devel Mailing List <e1000-devel@lists.sourceforge.net> + * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 + */  /* Linux PRO/1000 Ethernet Driver main header file */ @@ -269,12 +262,13 @@ struct e1000_adapter {  	u32 tx_head_addr;  	u32 tx_fifo_size;  	u32 tx_dma_failed; +	u32 tx_hwtstamp_timeouts;  	/* Rx */ -	bool (*clean_rx) (struct e1000_ring *ring, int *work_done, -			  int work_to_do) ____cacheline_aligned_in_smp; -	void (*alloc_rx_buf) (struct e1000_ring *ring, int cleaned_count, -			      gfp_t gfp); +	bool (*clean_rx)(struct e1000_ring *ring, int *work_done, +			 int work_to_do) ____cacheline_aligned_in_smp; +	void (*alloc_rx_buf)(struct e1000_ring *ring, int cleaned_count, +			     gfp_t gfp);  	struct e1000_ring *rx_ring;  	u32 rx_int_delay; @@ -333,7 +327,6 @@ struct e1000_adapter {  	struct work_struct update_phy_task;  	struct work_struct print_hang_task; -	bool idle_check;  	int phy_hang_count;  	u16 tx_ring_count; @@ -342,6 +335,7 @@ struct e1000_adapter {  	struct hwtstamp_config hwtstamp_config;  	struct delayed_work systim_overflow_work;  	struct sk_buff *tx_hwtstamp_skb; +	unsigned long tx_hwtstamp_start;  	struct work_struct tx_hwtstamp_work;  	spinlock_t systim_lock;	/* protects SYSTIML/H regsters */  	struct cyclecounter cc; @@ -397,6 +391,8 @@ s32 e1000e_get_base_timinca(struct e1000_adapter *adapter, u32 *timinca);   * 25MHz	46-bit	2^46 / 10^9 / 3600 = 19.55 hours   */  #define E1000_SYSTIM_OVERFLOW_PERIOD	(HZ * 60 * 60 * 4) +#define E1000_MAX_82574_SYSTIM_REREADS	50 +#define E1000_82574_SYSTIM_EPSILON	(1ULL << 35ULL)  /* hardware capability, feature, and workaround flags */  #define FLAG_HAS_AMT                      (1 << 0) @@ -472,26 +468,25 @@ enum latency_range {  extern char e1000e_driver_name[];  extern const char e1000e_driver_version[]; -extern void e1000e_check_options(struct e1000_adapter *adapter); -extern void e1000e_set_ethtool_ops(struct net_device *netdev); - -extern int e1000e_up(struct e1000_adapter *adapter); -extern void e1000e_down(struct e1000_adapter *adapter); -extern void e1000e_reinit_locked(struct e1000_adapter *adapter); -extern void e1000e_reset(struct e1000_adapter *adapter); -extern void e1000e_power_up_phy(struct e1000_adapter *adapter); -extern int e1000e_setup_rx_resources(struct e1000_ring *ring); -extern int e1000e_setup_tx_resources(struct e1000_ring *ring); -extern void e1000e_free_rx_resources(struct e1000_ring *ring); -extern void e1000e_free_tx_resources(struct e1000_ring *ring); -extern struct rtnl_link_stats64 *e1000e_get_stats64(struct net_device *netdev, -						    struct rtnl_link_stats64 -						    *stats); -extern void e1000e_set_interrupt_capability(struct e1000_adapter *adapter); -extern void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter); -extern void e1000e_get_hw_control(struct e1000_adapter *adapter); -extern void e1000e_release_hw_control(struct e1000_adapter *adapter); -extern void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr); +void e1000e_check_options(struct e1000_adapter *adapter); +void e1000e_set_ethtool_ops(struct net_device *netdev); + +int e1000e_up(struct e1000_adapter *adapter); +void e1000e_down(struct e1000_adapter *adapter, bool reset); +void e1000e_reinit_locked(struct e1000_adapter *adapter); +void e1000e_reset(struct e1000_adapter *adapter); +void e1000e_power_up_phy(struct e1000_adapter *adapter); +int e1000e_setup_rx_resources(struct e1000_ring *ring); +int e1000e_setup_tx_resources(struct e1000_ring *ring); +void e1000e_free_rx_resources(struct e1000_ring *ring); +void e1000e_free_tx_resources(struct e1000_ring *ring); +struct rtnl_link_stats64 *e1000e_get_stats64(struct net_device *netdev, +					     struct rtnl_link_stats64 *stats); +void e1000e_set_interrupt_capability(struct e1000_adapter *adapter); +void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter); +void e1000e_get_hw_control(struct e1000_adapter *adapter); +void e1000e_release_hw_control(struct e1000_adapter *adapter); +void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr);  extern unsigned int copybreak; @@ -508,8 +503,8 @@ extern const struct e1000_info e1000_pch2_info;  extern const struct e1000_info e1000_pch_lpt_info;  extern const struct e1000_info e1000_es2_info; -extern void e1000e_ptp_init(struct e1000_adapter *adapter); -extern void e1000e_ptp_remove(struct e1000_adapter *adapter); +void e1000e_ptp_init(struct e1000_adapter *adapter); +void e1000e_ptp_remove(struct e1000_adapter *adapter);  static inline s32 e1000_phy_hw_reset(struct e1000_hw *hw)  { @@ -536,7 +531,7 @@ static inline s32 e1e_wphy_locked(struct e1000_hw *hw, u32 offset, u16 data)  	return hw->phy.ops.write_reg_locked(hw, offset, data);  } -extern void e1000e_reload_nvm_generic(struct e1000_hw *hw); +void e1000e_reload_nvm_generic(struct e1000_hw *hw);  static inline s32 e1000e_read_mac_addr(struct e1000_hw *hw)  { @@ -580,35 +575,8 @@ static inline u32 __er32(struct e1000_hw *hw, unsigned long reg)  #define er32(reg)	__er32(hw, E1000_##reg) -/** - * __ew32_prepare - prepare to write to MAC CSR register on certain parts - * @hw: pointer to the HW structure - * - * When updating the MAC CSR registers, the Manageability Engine (ME) could - * be accessing the registers at the same time.  Normally, this is handled in - * h/w by an arbiter but on some parts there is a bug that acknowledges Host - * accesses later than it should which could result in the register to have - * an incorrect value.  Workaround this by checking the FWSM register which - * has bit 24 set while ME is accessing MAC CSR registers, wait if it is set - * and try again a number of times. - **/ -static inline s32 __ew32_prepare(struct e1000_hw *hw) -{ -	s32 i = E1000_ICH_FWSM_PCIM2PCI_COUNT; - -	while ((er32(FWSM) & E1000_ICH_FWSM_PCIM2PCI) && --i) -		udelay(50); - -	return i; -} - -static inline void __ew32(struct e1000_hw *hw, unsigned long reg, u32 val) -{ -	if (hw->adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) -		__ew32_prepare(hw); - -	writel(val, hw->hw_addr + reg); -} +s32 __ew32_prepare(struct e1000_hw *hw); +void __ew32(struct e1000_hw *hw, unsigned long reg, u32 val);  #define ew32(reg, val)	__ew32(hw, E1000_##reg, (val))  | 
