diff options
Diffstat (limited to 'drivers/net/ethernet/intel/igb/igb_main.c')
| -rw-r--r-- | drivers/net/ethernet/intel/igb/igb_main.c | 40 | 
1 files changed, 11 insertions, 29 deletions
diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c index a0a9b1fcb5e8..2f70a9b152bd 100644 --- a/drivers/net/ethernet/intel/igb/igb_main.c +++ b/drivers/net/ethernet/intel/igb/igb_main.c @@ -58,7 +58,7 @@  #define MAJ 5  #define MIN 2 -#define BUILD 15 +#define BUILD 18  #define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) "." \  __stringify(BUILD) "-k"  char igb_driver_name[] = "igb"; @@ -1836,31 +1836,19 @@ void igb_reinit_locked(struct igb_adapter *adapter)   *   * @adapter: adapter struct   **/ -static s32 igb_enable_mas(struct igb_adapter *adapter) +static void igb_enable_mas(struct igb_adapter *adapter)  {  	struct e1000_hw *hw = &adapter->hw; -	u32 connsw; -	s32 ret_val = 0; - -	connsw = rd32(E1000_CONNSW); -	if (!(hw->phy.media_type == e1000_media_type_copper)) -		return ret_val; +	u32 connsw = rd32(E1000_CONNSW);  	/* configure for SerDes media detect */ -	if (!(connsw & E1000_CONNSW_SERDESD)) { +	if ((hw->phy.media_type == e1000_media_type_copper) && +	    (!(connsw & E1000_CONNSW_SERDESD))) {  		connsw |= E1000_CONNSW_ENRGSRC;  		connsw |= E1000_CONNSW_AUTOSENSE_EN;  		wr32(E1000_CONNSW, connsw);  		wrfl(); -	} else if (connsw & E1000_CONNSW_SERDESD) { -		/* already SerDes, no need to enable anything */ -		return ret_val; -	} else { -		netdev_info(adapter->netdev, -			"MAS: Unable to configure feature, disabling..\n"); -		adapter->flags &= ~IGB_FLAG_MAS_ENABLE;  	} -	return ret_val;  }  void igb_reset(struct igb_adapter *adapter) @@ -1980,10 +1968,9 @@ void igb_reset(struct igb_adapter *adapter)  		adapter->ei.get_invariants(hw);  		adapter->flags &= ~IGB_FLAG_MEDIA_RESET;  	} -	if (adapter->flags & IGB_FLAG_MAS_ENABLE) { -		if (igb_enable_mas(adapter)) -			dev_err(&pdev->dev, -				"Error enabling Media Auto Sense\n"); +	if ((mac->type == e1000_82575) && +	    (adapter->flags & IGB_FLAG_MAS_ENABLE)) { +		igb_enable_mas(adapter);  	}  	if (hw->mac.ops.init_hw(hw))  		dev_err(&pdev->dev, "Hardware Error\n"); @@ -4989,6 +4976,7 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb,  	struct igb_tx_buffer *first;  	int tso;  	u32 tx_flags = 0; +	unsigned short f;  	u16 count = TXD_USE_COUNT(skb_headlen(skb));  	__be16 protocol = vlan_get_protocol(skb);  	u8 hdr_len = 0; @@ -4999,14 +4987,8 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb,  	 *       + 1 desc for context descriptor,  	 * otherwise try next time  	 */ -	if (NETDEV_FRAG_PAGE_MAX_SIZE > IGB_MAX_DATA_PER_TXD) { -		unsigned short f; - -		for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) -			count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size); -	} else { -		count += skb_shinfo(skb)->nr_frags; -	} +	for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) +		count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size);  	if (igb_maybe_stop_tx(tx_ring, count + 3)) {  		/* this is a hard error */  |