diff options
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e')
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/80003es2lan.c | 131 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/82571.c | 38 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/82571.h | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/defines.h | 27 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/e1000.h | 21 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/ethtool.c | 240 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/hw.h | 4 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/ich8lan.c | 408 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/ich8lan.h | 11 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/mac.c | 37 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/netdev.c | 306 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/nvm.c | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/param.c | 62 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/phy.c | 134 | 
14 files changed, 803 insertions, 620 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/80003es2lan.c b/drivers/net/ethernet/intel/e1000e/80003es2lan.c index e0991388664..b71c8502a2b 100644 --- a/drivers/net/ethernet/intel/e1000e/80003es2lan.c +++ b/drivers/net/ethernet/intel/e1000e/80003es2lan.c @@ -37,7 +37,9 @@   * "index + 5".   */  static const u16 e1000_gg82563_cable_length_table[] = { -	 0, 60, 115, 150, 150, 60, 115, 150, 180, 180, 0xFF }; +	0, 60, 115, 150, 150, 60, 115, 150, 180, 180, 0xFF +}; +  #define GG82563_CABLE_LENGTH_TABLE_SIZE \  		ARRAY_SIZE(e1000_gg82563_cable_length_table) @@ -116,7 +118,7 @@ static s32 e1000_init_nvm_params_80003es2lan(struct e1000_hw *hw)  	nvm->type = e1000_nvm_eeprom_spi;  	size = (u16)((eecd & E1000_EECD_SIZE_EX_MASK) >> -			  E1000_EECD_SIZE_EX_SHIFT); +		     E1000_EECD_SIZE_EX_SHIFT);  	/* Added to a constant, "size" becomes the left-shift value  	 * for setting word_size. @@ -393,7 +395,7 @@ static s32 e1000_read_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,  		 * before the device has completed the "Page Select" MDI  		 * transaction.  So we wait 200us after each MDI command...  		 */ -		udelay(200); +		usleep_range(200, 400);  		/* ...and verify the command was successful. */  		ret_val = e1000e_read_phy_reg_mdic(hw, page_select, &temp); @@ -403,17 +405,17 @@ static s32 e1000_read_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,  			return -E1000_ERR_PHY;  		} -		udelay(200); +		usleep_range(200, 400);  		ret_val = e1000e_read_phy_reg_mdic(hw, -		                                  MAX_PHY_REG_ADDRESS & offset, -		                                  data); +						   MAX_PHY_REG_ADDRESS & offset, +						   data); -		udelay(200); +		usleep_range(200, 400);  	} else {  		ret_val = e1000e_read_phy_reg_mdic(hw, -		                                  MAX_PHY_REG_ADDRESS & offset, -		                                  data); +						   MAX_PHY_REG_ADDRESS & offset, +						   data);  	}  	e1000_release_phy_80003es2lan(hw); @@ -462,7 +464,7 @@ static s32 e1000_write_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,  		 * before the device has completed the "Page Select" MDI  		 * transaction.  So we wait 200us after each MDI command...  		 */ -		udelay(200); +		usleep_range(200, 400);  		/* ...and verify the command was successful. */  		ret_val = e1000e_read_phy_reg_mdic(hw, page_select, &temp); @@ -472,17 +474,17 @@ static s32 e1000_write_phy_reg_gg82563_80003es2lan(struct e1000_hw *hw,  			return -E1000_ERR_PHY;  		} -		udelay(200); +		usleep_range(200, 400);  		ret_val = e1000e_write_phy_reg_mdic(hw, -		                                  MAX_PHY_REG_ADDRESS & offset, -		                                  data); +						    MAX_PHY_REG_ADDRESS & +						    offset, data); -		udelay(200); +		usleep_range(200, 400);  	} else {  		ret_val = e1000e_write_phy_reg_mdic(hw, -		                                  MAX_PHY_REG_ADDRESS & offset, -		                                  data); +						    MAX_PHY_REG_ADDRESS & +						    offset, data);  	}  	e1000_release_phy_80003es2lan(hw); @@ -580,7 +582,7 @@ static s32 e1000_phy_force_speed_duplex_80003es2lan(struct e1000_hw *hw)  		e_dbg("Waiting for forced speed/duplex link on GG82563 phy.\n");  		ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT, -						     100000, &link); +						      100000, &link);  		if (ret_val)  			return ret_val; @@ -595,7 +597,7 @@ static s32 e1000_phy_force_speed_duplex_80003es2lan(struct e1000_hw *hw)  		/* Try once more */  		ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT, -						     100000, &link); +						      100000, &link);  		if (ret_val)  			return ret_val;  	} @@ -666,14 +668,12 @@ static s32 e1000_get_link_up_info_80003es2lan(struct e1000_hw *hw, u16 *speed,  	s32 ret_val;  	if (hw->phy.media_type == e1000_media_type_copper) { -		ret_val = e1000e_get_speed_and_duplex_copper(hw, -								    speed, -								    duplex); +		ret_val = e1000e_get_speed_and_duplex_copper(hw, speed, duplex);  		hw->phy.ops.cfg_on_link_up(hw);  	} else {  		ret_val = e1000e_get_speed_and_duplex_fiber_serdes(hw, -								  speed, -								  duplex); +								   speed, +								   duplex);  	}  	return ret_val; @@ -754,9 +754,9 @@ static s32 e1000_init_hw_80003es2lan(struct e1000_hw *hw)  	/* Initialize identification LED */  	ret_val = mac->ops.id_led_init(hw); +	/* An error is not fatal and we should not stop init due to this */  	if (ret_val)  		e_dbg("Error initializing identification LED\n"); -		/* This is not fatal and we should not stop init due to this */  	/* Disabling VLAN filtering */  	e_dbg("Initializing the IEEE VLAN\n"); @@ -784,14 +784,14 @@ static s32 e1000_init_hw_80003es2lan(struct e1000_hw *hw)  	/* Set the transmit descriptor write-back policy */  	reg_data = er32(TXDCTL(0)); -	reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) | -		   E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC; +	reg_data = ((reg_data & ~E1000_TXDCTL_WTHRESH) | +		    E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC);  	ew32(TXDCTL(0), reg_data);  	/* ...for both queues. */  	reg_data = er32(TXDCTL(1)); -	reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) | -		   E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC; +	reg_data = ((reg_data & ~E1000_TXDCTL_WTHRESH) | +		    E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC);  	ew32(TXDCTL(1), reg_data);  	/* Enable retransmit on late collisions */ @@ -818,13 +818,12 @@ static s32 e1000_init_hw_80003es2lan(struct e1000_hw *hw)  	/* default to true to enable the MDIC W/A */  	hw->dev_spec.e80003es2lan.mdic_wa_enable = true; -	ret_val = e1000_read_kmrn_reg_80003es2lan(hw, -	                              E1000_KMRNCTRLSTA_OFFSET >> -	                              E1000_KMRNCTRLSTA_OFFSET_SHIFT, -	                              &i); +	ret_val = +	    e1000_read_kmrn_reg_80003es2lan(hw, E1000_KMRNCTRLSTA_OFFSET >> +					    E1000_KMRNCTRLSTA_OFFSET_SHIFT, &i);  	if (!ret_val) {  		if ((i & E1000_KMRNCTRLSTA_OPMODE_MASK) == -		     E1000_KMRNCTRLSTA_OPMODE_INBAND_MDIO) +		    E1000_KMRNCTRLSTA_OPMODE_INBAND_MDIO)  			hw->dev_spec.e80003es2lan.mdic_wa_enable = false;  	} @@ -891,7 +890,7 @@ static s32 e1000_copper_link_setup_gg82563_80003es2lan(struct e1000_hw *hw)  {  	struct e1000_phy_info *phy = &hw->phy;  	s32 ret_val; -	u32 ctrl_ext; +	u32 reg;  	u16 data;  	ret_val = e1e_rphy(hw, GG82563_PHY_MAC_SPEC_CTRL, &data); @@ -954,22 +953,19 @@ static s32 e1000_copper_link_setup_gg82563_80003es2lan(struct e1000_hw *hw)  	}  	/* Bypass Rx and Tx FIFO's */ -	ret_val = e1000_write_kmrn_reg_80003es2lan(hw, -					E1000_KMRNCTRLSTA_OFFSET_FIFO_CTRL, -					E1000_KMRNCTRLSTA_FIFO_CTRL_RX_BYPASS | -					E1000_KMRNCTRLSTA_FIFO_CTRL_TX_BYPASS); +	reg = E1000_KMRNCTRLSTA_OFFSET_FIFO_CTRL; +	data = (E1000_KMRNCTRLSTA_FIFO_CTRL_RX_BYPASS | +		E1000_KMRNCTRLSTA_FIFO_CTRL_TX_BYPASS); +	ret_val = e1000_write_kmrn_reg_80003es2lan(hw, reg, data);  	if (ret_val)  		return ret_val; -	ret_val = e1000_read_kmrn_reg_80003es2lan(hw, -				       E1000_KMRNCTRLSTA_OFFSET_MAC2PHY_OPMODE, -				       &data); +	reg = E1000_KMRNCTRLSTA_OFFSET_MAC2PHY_OPMODE; +	ret_val = e1000_read_kmrn_reg_80003es2lan(hw, reg, &data);  	if (ret_val)  		return ret_val;  	data |= E1000_KMRNCTRLSTA_OPMODE_E_IDLE; -	ret_val = e1000_write_kmrn_reg_80003es2lan(hw, -					E1000_KMRNCTRLSTA_OFFSET_MAC2PHY_OPMODE, -					data); +	ret_val = e1000_write_kmrn_reg_80003es2lan(hw, reg, data);  	if (ret_val)  		return ret_val; @@ -982,9 +978,9 @@ static s32 e1000_copper_link_setup_gg82563_80003es2lan(struct e1000_hw *hw)  	if (ret_val)  		return ret_val; -	ctrl_ext = er32(CTRL_EXT); -	ctrl_ext &= ~(E1000_CTRL_EXT_LINK_MODE_MASK); -	ew32(CTRL_EXT, ctrl_ext); +	reg = er32(CTRL_EXT); +	reg &= ~E1000_CTRL_EXT_LINK_MODE_MASK; +	ew32(CTRL_EXT, reg);  	ret_val = e1e_rphy(hw, GG82563_PHY_PWR_MGMT_CTRL, &data);  	if (ret_val) @@ -1049,27 +1045,29 @@ static s32 e1000_setup_copper_link_80003es2lan(struct e1000_hw *hw)  	 * polling the phy; this fixes erroneous timeouts at 10Mbps.  	 */  	ret_val = e1000_write_kmrn_reg_80003es2lan(hw, GG82563_REG(0x34, 4), -	                                           0xFFFF); +						   0xFFFF);  	if (ret_val)  		return ret_val;  	ret_val = e1000_read_kmrn_reg_80003es2lan(hw, GG82563_REG(0x34, 9), -	                                          ®_data); +						  ®_data);  	if (ret_val)  		return ret_val;  	reg_data |= 0x3F;  	ret_val = e1000_write_kmrn_reg_80003es2lan(hw, GG82563_REG(0x34, 9), -	                                           reg_data); +						   reg_data);  	if (ret_val)  		return ret_val; -	ret_val = e1000_read_kmrn_reg_80003es2lan(hw, -				      E1000_KMRNCTRLSTA_OFFSET_INB_CTRL, -				      ®_data); +	ret_val = +	    e1000_read_kmrn_reg_80003es2lan(hw, +					    E1000_KMRNCTRLSTA_OFFSET_INB_CTRL, +					    ®_data);  	if (ret_val)  		return ret_val;  	reg_data |= E1000_KMRNCTRLSTA_INB_CTRL_DIS_PADDING; -	ret_val = e1000_write_kmrn_reg_80003es2lan(hw, -					E1000_KMRNCTRLSTA_OFFSET_INB_CTRL, -					reg_data); +	ret_val = +	    e1000_write_kmrn_reg_80003es2lan(hw, +					     E1000_KMRNCTRLSTA_OFFSET_INB_CTRL, +					     reg_data);  	if (ret_val)  		return ret_val; @@ -1096,7 +1094,7 @@ static s32 e1000_cfg_on_link_up_80003es2lan(struct e1000_hw *hw)  	if (hw->phy.media_type == e1000_media_type_copper) {  		ret_val = e1000e_get_speed_and_duplex_copper(hw, &speed, -		                                             &duplex); +							     &duplex);  		if (ret_val)  			return ret_val; @@ -1125,9 +1123,10 @@ static s32 e1000_cfg_kmrn_10_100_80003es2lan(struct e1000_hw *hw, u16 duplex)  	u16 reg_data, reg_data2;  	reg_data = E1000_KMRNCTRLSTA_HD_CTRL_10_100_DEFAULT; -	ret_val = e1000_write_kmrn_reg_80003es2lan(hw, -	                               E1000_KMRNCTRLSTA_OFFSET_HD_CTRL, -	                               reg_data); +	ret_val = +	    e1000_write_kmrn_reg_80003es2lan(hw, +					     E1000_KMRNCTRLSTA_OFFSET_HD_CTRL, +					     reg_data);  	if (ret_val)  		return ret_val; @@ -1171,9 +1170,10 @@ static s32 e1000_cfg_kmrn_1000_80003es2lan(struct e1000_hw *hw)  	u32 i = 0;  	reg_data = E1000_KMRNCTRLSTA_HD_CTRL_1000_DEFAULT; -	ret_val = e1000_write_kmrn_reg_80003es2lan(hw, -	                               E1000_KMRNCTRLSTA_OFFSET_HD_CTRL, -	                               reg_data); +	ret_val = +	    e1000_write_kmrn_reg_80003es2lan(hw, +					     E1000_KMRNCTRLSTA_OFFSET_HD_CTRL, +					     reg_data);  	if (ret_val)  		return ret_val; @@ -1220,7 +1220,7 @@ static s32 e1000_read_kmrn_reg_80003es2lan(struct e1000_hw *hw, u32 offset,  		return ret_val;  	kmrnctrlsta = ((offset << E1000_KMRNCTRLSTA_OFFSET_SHIFT) & -	               E1000_KMRNCTRLSTA_OFFSET) | E1000_KMRNCTRLSTA_REN; +		       E1000_KMRNCTRLSTA_OFFSET) | E1000_KMRNCTRLSTA_REN;  	ew32(KMRNCTRLSTA, kmrnctrlsta);  	e1e_flush(); @@ -1255,7 +1255,7 @@ static s32 e1000_write_kmrn_reg_80003es2lan(struct e1000_hw *hw, u32 offset,  		return ret_val;  	kmrnctrlsta = ((offset << E1000_KMRNCTRLSTA_OFFSET_SHIFT) & -	               E1000_KMRNCTRLSTA_OFFSET) | data; +		       E1000_KMRNCTRLSTA_OFFSET) | data;  	ew32(KMRNCTRLSTA, kmrnctrlsta);  	e1e_flush(); @@ -1419,4 +1419,3 @@ const struct e1000_info e1000_es2_info = {  	.phy_ops		= &es2_phy_ops,  	.nvm_ops		= &es2_nvm_ops,  }; - diff --git a/drivers/net/ethernet/intel/e1000e/82571.c b/drivers/net/ethernet/intel/e1000e/82571.c index 2faffbde179..7380442a382 100644 --- a/drivers/net/ethernet/intel/e1000e/82571.c +++ b/drivers/net/ethernet/intel/e1000e/82571.c @@ -184,7 +184,7 @@ static s32 e1000_init_nvm_params_82571(struct e1000_hw *hw)  	default:  		nvm->type = e1000_nvm_eeprom_spi;  		size = (u16)((eecd & E1000_EECD_SIZE_EX_MASK) >> -				  E1000_EECD_SIZE_EX_SHIFT); +			     E1000_EECD_SIZE_EX_SHIFT);  		/* Added to a constant, "size" becomes the left-shift value  		 * for setting word_size.  		 */ @@ -437,7 +437,7 @@ static s32 e1000_get_phy_id_82571(struct e1000_hw *hw)  			return ret_val;  		phy->id = (u32)(phy_id << 16); -		udelay(20); +		usleep_range(20, 40);  		ret_val = e1e_rphy(hw, MII_PHYSID2, &phy_id);  		if (ret_val)  			return ret_val; @@ -482,7 +482,7 @@ static s32 e1000_get_hw_semaphore_82571(struct e1000_hw *hw)  		if (!(swsm & E1000_SWSM_SMBI))  			break; -		udelay(50); +		usleep_range(50, 100);  		i++;  	} @@ -499,7 +499,7 @@ static s32 e1000_get_hw_semaphore_82571(struct e1000_hw *hw)  		if (er32(SWSM) & E1000_SWSM_SWESMBI)  			break; -		udelay(50); +		usleep_range(50, 100);  	}  	if (i == fw_timeout) { @@ -526,6 +526,7 @@ static void e1000_put_hw_semaphore_82571(struct e1000_hw *hw)  	swsm &= ~(E1000_SWSM_SMBI | E1000_SWSM_SWESMBI);  	ew32(SWSM, swsm);  } +  /**   *  e1000_get_hw_semaphore_82573 - Acquire hardware semaphore   *  @hw: pointer to the HW structure @@ -846,9 +847,9 @@ static s32 e1000_write_nvm_eewr_82571(struct e1000_hw *hw, u16 offset,  	}  	for (i = 0; i < words; i++) { -		eewr = (data[i] << E1000_NVM_RW_REG_DATA) | -		       ((offset+i) << E1000_NVM_RW_ADDR_SHIFT) | -		       E1000_NVM_RW_REG_START; +		eewr = ((data[i] << E1000_NVM_RW_REG_DATA) | +			((offset + i) << E1000_NVM_RW_ADDR_SHIFT) | +			E1000_NVM_RW_REG_START);  		ret_val = e1000e_poll_eerd_eewr_done(hw, E1000_NVM_POLL_WRITE);  		if (ret_val) @@ -875,8 +876,7 @@ static s32 e1000_get_cfg_done_82571(struct e1000_hw *hw)  	s32 timeout = PHY_CFG_TIMEOUT;  	while (timeout) { -		if (er32(EEMNGCTL) & -		    E1000_NVM_CFG_DONE_PORT_0) +		if (er32(EEMNGCTL) & E1000_NVM_CFG_DONE_PORT_0)  			break;  		usleep_range(1000, 2000);  		timeout--; @@ -1022,7 +1022,7 @@ static s32 e1000_reset_hw_82571(struct e1000_hw *hw)  	}  	if (hw->nvm.type == e1000_nvm_flash_hw) { -		udelay(10); +		usleep_range(10, 20);  		ctrl_ext = er32(CTRL_EXT);  		ctrl_ext |= E1000_CTRL_EXT_EE_RST;  		ew32(CTRL_EXT, ctrl_ext); @@ -1095,9 +1095,9 @@ static s32 e1000_init_hw_82571(struct e1000_hw *hw)  	/* Initialize identification LED */  	ret_val = mac->ops.id_led_init(hw); +	/* An error is not fatal and we should not stop init due to this */  	if (ret_val)  		e_dbg("Error initializing identification LED\n"); -		/* This is not fatal and we should not stop init due to this */  	/* Disabling VLAN filtering */  	e_dbg("Initializing the IEEE VLAN\n"); @@ -1122,9 +1122,8 @@ static s32 e1000_init_hw_82571(struct e1000_hw *hw)  	/* Set the transmit descriptor write-back policy */  	reg_data = er32(TXDCTL(0)); -	reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) | -		   E1000_TXDCTL_FULL_TX_DESC_WB | -		   E1000_TXDCTL_COUNT_DESC; +	reg_data = ((reg_data & ~E1000_TXDCTL_WTHRESH) | +		    E1000_TXDCTL_FULL_TX_DESC_WB | E1000_TXDCTL_COUNT_DESC);  	ew32(TXDCTL(0), reg_data);  	/* ...for both queues. */ @@ -1140,9 +1139,9 @@ static s32 e1000_init_hw_82571(struct e1000_hw *hw)  		break;  	default:  		reg_data = er32(TXDCTL(1)); -		reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) | -			   E1000_TXDCTL_FULL_TX_DESC_WB | -			   E1000_TXDCTL_COUNT_DESC; +		reg_data = ((reg_data & ~E1000_TXDCTL_WTHRESH) | +			    E1000_TXDCTL_FULL_TX_DESC_WB | +			    E1000_TXDCTL_COUNT_DESC);  		ew32(TXDCTL(1), reg_data);  		break;  	} @@ -1530,7 +1529,7 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)  	status = er32(STATUS);  	er32(RXCW);  	/* SYNCH bit and IV bit are sticky */ -	udelay(10); +	usleep_range(10, 20);  	rxcw = er32(RXCW);  	if ((rxcw & E1000_RXCW_SYNCH) && !(rxcw & E1000_RXCW_IV)) { @@ -1633,7 +1632,7 @@ static s32 e1000_check_for_serdes_link_82571(struct e1000_hw *hw)  			 * the IV bit and restart Autoneg  			 */  			for (i = 0; i < AN_RETRY_COUNT; i++) { -				udelay(10); +				usleep_range(10, 20);  				rxcw = er32(RXCW);  				if ((rxcw & E1000_RXCW_SYNCH) &&  				    (rxcw & E1000_RXCW_C)) @@ -2066,4 +2065,3 @@ const struct e1000_info e1000_82583_info = {  	.phy_ops		= &e82_phy_ops_bm,  	.nvm_ops		= &e82571_nvm_ops,  }; - diff --git a/drivers/net/ethernet/intel/e1000e/82571.h b/drivers/net/ethernet/intel/e1000e/82571.h index 85cb1a3b7cd..08e24dc3dc0 100644 --- a/drivers/net/ethernet/intel/e1000e/82571.h +++ b/drivers/net/ethernet/intel/e1000e/82571.h @@ -44,6 +44,8 @@  #define E1000_EIAC_82574	0x000DC	/* Ext. Interrupt Auto Clear - RW */  #define E1000_EIAC_MASK_82574	0x01F00000 +#define E1000_IVAR_INT_ALLOC_VALID	0x8 +  /* Manageability Operation Mode mask */  #define E1000_NVM_INIT_CTRL2_MNGM	0x6000 diff --git a/drivers/net/ethernet/intel/e1000e/defines.h b/drivers/net/ethernet/intel/e1000e/defines.h index fc3a4fe1ac7..351c94a0cf7 100644 --- a/drivers/net/ethernet/intel/e1000e/defines.h +++ b/drivers/net/ethernet/intel/e1000e/defines.h @@ -66,7 +66,7 @@  #define E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES  0x00C00000  #define E1000_CTRL_EXT_EIAME          0x01000000  #define E1000_CTRL_EXT_DRV_LOAD       0x10000000 /* Driver loaded bit for FW */ -#define E1000_CTRL_EXT_IAME           0x08000000 /* Interrupt acknowledge Auto-mask */ +#define E1000_CTRL_EXT_IAME		0x08000000 /* Int ACK Auto-mask */  #define E1000_CTRL_EXT_PBA_CLR        0x80000000 /* PBA Clear */  #define E1000_CTRL_EXT_LSECCK         0x00001000  #define E1000_CTRL_EXT_PHYPDEN        0x00100000 @@ -216,6 +216,8 @@  #define E1000_CTRL_MEHE     0x00080000  /* Memory Error Handling Enable */  #define E1000_CTRL_SWDPIN0  0x00040000  /* SWDPIN 0 value */  #define E1000_CTRL_SWDPIN1  0x00080000  /* SWDPIN 1 value */ +#define E1000_CTRL_ADVD3WUC 0x00100000  /* D3 WUC */ +#define E1000_CTRL_EN_PHY_PWR_MGMT 0x00200000 /* PHY PM enable */  #define E1000_CTRL_SWDPIO0  0x00400000  /* SWDPIN 0 Input or output */  #define E1000_CTRL_RST      0x04000000  /* Global reset */  #define E1000_CTRL_RFCE     0x08000000  /* Receive Flow Control enable */ @@ -234,17 +236,17 @@  #define E1000_STATUS_FUNC_SHIFT 2  #define E1000_STATUS_FUNC_1     0x00000004      /* Function 1 */  #define E1000_STATUS_TXOFF      0x00000010      /* transmission paused */ +#define E1000_STATUS_SPEED_MASK 0x000000C0  #define E1000_STATUS_SPEED_10   0x00000000      /* Speed 10Mb/s */  #define E1000_STATUS_SPEED_100  0x00000040      /* Speed 100Mb/s */  #define E1000_STATUS_SPEED_1000 0x00000080      /* Speed 1000Mb/s */  #define E1000_STATUS_LAN_INIT_DONE 0x00000200   /* Lan Init Completion by NVM */  #define E1000_STATUS_PHYRA      0x00000400      /* PHY Reset Asserted */ -#define E1000_STATUS_GIO_MASTER_ENABLE 0x00080000 /* Status of Master requests. */ +#define E1000_STATUS_GIO_MASTER_ENABLE	0x00080000	/* Master Req status */  #define HALF_DUPLEX 1  #define FULL_DUPLEX 2 -  #define ADVERTISE_10_HALF                 0x0001  #define ADVERTISE_10_FULL                 0x0002  #define ADVERTISE_100_HALF                0x0004 @@ -311,6 +313,7 @@  /* SerDes Control */  #define E1000_SCTL_DISABLE_SERDES_LOOPBACK 0x0400 +#define E1000_SCTL_ENABLE_SERDES_LOOPBACK	0x0410  /* Receive Checksum Control */  #define E1000_RXCSUM_TUOFL     0x00000200   /* TCP / UDP checksum offload */ @@ -400,7 +403,8 @@  #define E1000_ICR_RXDMT0        0x00000010 /* Rx desc min. threshold (0) */  #define E1000_ICR_RXT0          0x00000080 /* Rx timer intr (ring 0) */  #define E1000_ICR_ECCER         0x00400000 /* Uncorrectable ECC Error */ -#define E1000_ICR_INT_ASSERTED  0x80000000 /* If this bit asserted, the driver should claim the interrupt */ +/* If this bit asserted, the driver should claim the interrupt */ +#define E1000_ICR_INT_ASSERTED	0x80000000  #define E1000_ICR_RXQ0          0x00100000 /* Rx Queue 0 Interrupt */  #define E1000_ICR_RXQ1          0x00200000 /* Rx Queue 1 Interrupt */  #define E1000_ICR_TXQ0          0x00400000 /* Tx Queue 0 Interrupt */ @@ -583,13 +587,13 @@  #define E1000_EECD_SEC1VAL   0x00400000 /* Sector One Valid */  #define E1000_EECD_SEC1VAL_VALID_MASK (E1000_EECD_AUTO_RD | E1000_EECD_PRES) -#define E1000_NVM_RW_REG_DATA   16   /* Offset to data in NVM read/write registers */ -#define E1000_NVM_RW_REG_DONE   2    /* Offset to READ/WRITE done bit */ -#define E1000_NVM_RW_REG_START  1    /* Start operation */ -#define E1000_NVM_RW_ADDR_SHIFT 2    /* Shift to the address bits */ -#define E1000_NVM_POLL_WRITE    1    /* Flag for polling for write complete */ -#define E1000_NVM_POLL_READ     0    /* Flag for polling for read complete */ -#define E1000_FLASH_UPDATES  2000 +#define E1000_NVM_RW_REG_DATA	16	/* Offset to data in NVM r/w regs */ +#define E1000_NVM_RW_REG_DONE	2	/* Offset to READ/WRITE done bit */ +#define E1000_NVM_RW_REG_START	1	/* Start operation */ +#define E1000_NVM_RW_ADDR_SHIFT	2	/* Shift to the address bits */ +#define E1000_NVM_POLL_WRITE	1	/* Flag for polling write complete */ +#define E1000_NVM_POLL_READ	0	/* Flag for polling read complete */ +#define E1000_FLASH_UPDATES	2000  /* NVM Word Offsets */  #define NVM_COMPAT                 0x0003 @@ -785,6 +789,7 @@  	GG82563_REG(194, 18) /* Inband Control */  /* MDI Control */ +#define E1000_MDIC_REG_MASK	0x001F0000  #define E1000_MDIC_REG_SHIFT 16  #define E1000_MDIC_PHY_SHIFT 21  #define E1000_MDIC_OP_WRITE  0x04000000 diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h index fcc758138b8..82f1c84282d 100644 --- a/drivers/net/ethernet/intel/e1000e/e1000.h +++ b/drivers/net/ethernet/intel/e1000e/e1000.h @@ -46,6 +46,7 @@  #include <linux/ptp_clock_kernel.h>  #include <linux/ptp_classify.h>  #include <linux/mii.h> +#include <linux/mdio.h>  #include "hw.h"  struct e1000_info; @@ -61,7 +62,6 @@ struct e1000_info;  #define e_notice(format, arg...) \  	netdev_notice(adapter->netdev, format, ## arg) -  /* Interrupt modes, as used by the IntMode parameter */  #define E1000E_INT_MODE_LEGACY		0  #define E1000E_INT_MODE_MSI		1 @@ -239,9 +239,8 @@ struct e1000_adapter {  	u16 tx_itr;  	u16 rx_itr; -	/* Tx */ -	struct e1000_ring *tx_ring /* One per active queue */ -						____cacheline_aligned_in_smp; +	/* Tx - one ring per active queue */ +	struct e1000_ring *tx_ring ____cacheline_aligned_in_smp;  	u32 tx_fifo_limit;  	struct napi_struct napi; @@ -352,6 +351,8 @@ struct e1000_adapter {  	struct timecounter tc;  	struct ptp_clock *ptp_clock;  	struct ptp_clock_info ptp_clock_info; + +	u16 eee_advert;  };  struct e1000_info { @@ -487,8 +488,8 @@ 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); +						    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); @@ -558,12 +559,14 @@ static inline s32 e1000e_update_nvm_checksum(struct e1000_hw *hw)  	return hw->nvm.ops.update(hw);  } -static inline s32 e1000_read_nvm(struct e1000_hw *hw, u16 offset, u16 words, u16 *data) +static inline s32 e1000_read_nvm(struct e1000_hw *hw, u16 offset, u16 words, +				 u16 *data)  {  	return hw->nvm.ops.read(hw, offset, words, data);  } -static inline s32 e1000_write_nvm(struct e1000_hw *hw, u16 offset, u16 words, u16 *data) +static inline s32 e1000_write_nvm(struct e1000_hw *hw, u16 offset, u16 words, +				  u16 *data)  {  	return hw->nvm.ops.write(hw, offset, words, data);  } @@ -597,7 +600,7 @@ 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); +		usleep_range(50, 100);  	return i;  } diff --git a/drivers/net/ethernet/intel/e1000e/ethtool.c b/drivers/net/ethernet/intel/e1000e/ethtool.c index f91a8f3f9d4..7c8ca658d55 100644 --- a/drivers/net/ethernet/intel/e1000e/ethtool.c +++ b/drivers/net/ethernet/intel/e1000e/ethtool.c @@ -35,12 +35,11 @@  #include <linux/slab.h>  #include <linux/delay.h>  #include <linux/vmalloc.h> -#include <linux/mdio.h>  #include <linux/pm_runtime.h>  #include "e1000.h" -enum {NETDEV_STATS, E1000_STATS}; +enum { NETDEV_STATS, E1000_STATS };  struct e1000_stats {  	char stat_string[ETH_GSTRING_LEN]; @@ -121,6 +120,7 @@ static const char e1000_gstrings_test[][ETH_GSTRING_LEN] = {  	"Interrupt test (offline)", "Loopback test  (offline)",  	"Link test   (on/offline)"  }; +  #define E1000_TEST_LEN ARRAY_SIZE(e1000_gstrings_test)  static int e1000_get_settings(struct net_device *netdev, @@ -197,8 +197,7 @@ static int e1000_get_settings(struct net_device *netdev,  	/* MDI-X => 2; MDI =>1; Invalid =>0 */  	if ((hw->phy.media_type == e1000_media_type_copper) &&  	    netif_carrier_ok(netdev)) -		ecmd->eth_tp_mdix = hw->phy.is_mdix ? ETH_TP_MDI_X : -		                                      ETH_TP_MDI; +		ecmd->eth_tp_mdix = hw->phy.is_mdix ? ETH_TP_MDI_X : ETH_TP_MDI;  	else  		ecmd->eth_tp_mdix = ETH_TP_MDI_INVALID; @@ -224,8 +223,7 @@ static int e1000_set_spd_dplx(struct e1000_adapter *adapter, u32 spd, u8 dplx)  	/* Fiber NICs only allow 1000 gbps Full duplex */  	if ((adapter->hw.phy.media_type == e1000_media_type_fiber) && -	    spd != SPEED_1000 && -	    dplx != DUPLEX_FULL) { +	    (spd != SPEED_1000) && (dplx != DUPLEX_FULL)) {  		goto err_inval;  	} @@ -298,12 +296,10 @@ static int e1000_set_settings(struct net_device *netdev,  		hw->mac.autoneg = 1;  		if (hw->phy.media_type == e1000_media_type_fiber)  			hw->phy.autoneg_advertised = ADVERTISED_1000baseT_Full | -						     ADVERTISED_FIBRE | -						     ADVERTISED_Autoneg; +			    ADVERTISED_FIBRE | ADVERTISED_Autoneg;  		else  			hw->phy.autoneg_advertised = ecmd->advertising | -						     ADVERTISED_TP | -						     ADVERTISED_Autoneg; +			    ADVERTISED_TP | ADVERTISED_Autoneg;  		ecmd->advertising = hw->phy.autoneg_advertised;  		if (adapter->fc_autoneg)  			hw->fc.requested_mode = e1000_fc_default; @@ -346,7 +342,7 @@ static void e1000_get_pauseparam(struct net_device *netdev,  	struct e1000_hw *hw = &adapter->hw;  	pause->autoneg = -		(adapter->fc_autoneg ? AUTONEG_ENABLE : AUTONEG_DISABLE); +	    (adapter->fc_autoneg ? AUTONEG_ENABLE : AUTONEG_DISABLE);  	if (hw->fc.current_mode == e1000_fc_rx_pause) {  		pause->rx_pause = 1; @@ -435,7 +431,7 @@ static void e1000_get_regs(struct net_device *netdev,  	memset(p, 0, E1000_REGS_LEN * sizeof(u32));  	regs->version = (1 << 24) | (adapter->pdev->revision << 16) | -			adapter->pdev->device; +	    adapter->pdev->device;  	regs_buff[0]  = er32(CTRL);  	regs_buff[1]  = er32(STATUS); @@ -503,8 +499,8 @@ static int e1000_get_eeprom(struct net_device *netdev,  	first_word = eeprom->offset >> 1;  	last_word = (eeprom->offset + eeprom->len - 1) >> 1; -	eeprom_buff = kmalloc(sizeof(u16) * -			(last_word - first_word + 1), GFP_KERNEL); +	eeprom_buff = kmalloc(sizeof(u16) * (last_word - first_word + 1), +			      GFP_KERNEL);  	if (!eeprom_buff)  		return -ENOMEM; @@ -515,7 +511,7 @@ static int e1000_get_eeprom(struct net_device *netdev,  	} else {  		for (i = 0; i < last_word - first_word + 1; i++) {  			ret_val = e1000_read_nvm(hw, first_word + i, 1, -						      &eeprom_buff[i]); +						 &eeprom_buff[i]);  			if (ret_val)  				break;  		} @@ -553,7 +549,8 @@ static int e1000_set_eeprom(struct net_device *netdev,  	if (eeprom->len == 0)  		return -EOPNOTSUPP; -	if (eeprom->magic != (adapter->pdev->vendor | (adapter->pdev->device << 16))) +	if (eeprom->magic != +	    (adapter->pdev->vendor | (adapter->pdev->device << 16)))  		return -EFAULT;  	if (adapter->flags & FLAG_READ_ONLY_NVM) @@ -579,7 +576,7 @@ static int e1000_set_eeprom(struct net_device *netdev,  		/* need read/modify/write of last changed EEPROM word */  		/* only the first byte of the word is being modified */  		ret_val = e1000_read_nvm(hw, last_word, 1, -				  &eeprom_buff[last_word - first_word]); +					 &eeprom_buff[last_word - first_word]);  	if (ret_val)  		goto out; @@ -618,8 +615,7 @@ static void e1000_get_drvinfo(struct net_device *netdev,  {  	struct e1000_adapter *adapter = netdev_priv(netdev); -	strlcpy(drvinfo->driver,  e1000e_driver_name, -		sizeof(drvinfo->driver)); +	strlcpy(drvinfo->driver, e1000e_driver_name, sizeof(drvinfo->driver));  	strlcpy(drvinfo->version, e1000e_driver_version,  		sizeof(drvinfo->version)); @@ -627,10 +623,10 @@ static void e1000_get_drvinfo(struct net_device *netdev,  	 * PCI-E controllers  	 */  	snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version), -		"%d.%d-%d", -		(adapter->eeprom_vers & 0xF000) >> 12, -		(adapter->eeprom_vers & 0x0FF0) >> 4, -		(adapter->eeprom_vers & 0x000F)); +		 "%d.%d-%d", +		 (adapter->eeprom_vers & 0xF000) >> 12, +		 (adapter->eeprom_vers & 0x0FF0) >> 4, +		 (adapter->eeprom_vers & 0x000F));  	strlcpy(drvinfo->bus_info, pci_name(adapter->pdev),  		sizeof(drvinfo->bus_info)); @@ -756,7 +752,8 @@ static bool reg_pattern_test(struct e1000_adapter *adapter, u64 *data,  {  	u32 pat, val;  	static const u32 test[] = { -		0x5A5A5A5A, 0xA5A5A5A5, 0x00000000, 0xFFFFFFFF}; +		0x5A5A5A5A, 0xA5A5A5A5, 0x00000000, 0xFFFFFFFF +	};  	for (pat = 0; pat < ARRAY_SIZE(test); pat++) {  		E1000_WRITE_REG_ARRAY(&adapter->hw, reg, offset,  				      (test[pat] & write)); @@ -786,6 +783,7 @@ static bool reg_set_and_check(struct e1000_adapter *adapter, u64 *data,  	}  	return 0;  } +  #define REG_PATTERN_TEST_ARRAY(reg, offset, mask, write)                       \  	do {                                                                   \  		if (reg_pattern_test(adapter, data, reg, offset, mask, write)) \ @@ -813,16 +811,16 @@ static int e1000_reg_test(struct e1000_adapter *adapter, u64 *data)  	u32 wlock_mac = 0;  	/* The status register is Read Only, so a write should fail. -	 * Some bits that get toggled are ignored. +	 * Some bits that get toggled are ignored.  There are several bits +	 * on newer hardware that are r/w.  	 */  	switch (mac->type) { -	/* there are several bits on newer hardware that are r/w */  	case e1000_82571:  	case e1000_82572:  	case e1000_80003es2lan:  		toggle = 0x7FFFF3FF;  		break; -        default: +	default:  		toggle = 0x7FFFF033;  		break;  	} @@ -928,7 +926,7 @@ static int e1000_eeprom_test(struct e1000_adapter *adapter, u64 *data)  	}  	/* If Checksum is not Correct return error else test passed */ -	if ((checksum != (u16) NVM_SUM) && !(*data)) +	if ((checksum != (u16)NVM_SUM) && !(*data))  		*data = 2;  	return *data; @@ -936,7 +934,7 @@ static int e1000_eeprom_test(struct e1000_adapter *adapter, u64 *data)  static irqreturn_t e1000_test_intr(int __always_unused irq, void *data)  { -	struct net_device *netdev = (struct net_device *) data; +	struct net_device *netdev = (struct net_device *)data;  	struct e1000_adapter *adapter = netdev_priv(netdev);  	struct e1000_hw *hw = &adapter->hw; @@ -969,8 +967,8 @@ static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)  	if (!request_irq(irq, e1000_test_intr, IRQF_PROBE_SHARED, netdev->name,  			 netdev)) {  		shared_int = 0; -	} else if (request_irq(irq, e1000_test_intr, IRQF_SHARED, -		 netdev->name, netdev)) { +	} else if (request_irq(irq, e1000_test_intr, IRQF_SHARED, netdev->name, +			       netdev)) {  		*data = 1;  		ret_val = -1;  		goto out; @@ -1080,28 +1078,33 @@ static void e1000_free_desc_rings(struct e1000_adapter *adapter)  	struct e1000_ring *tx_ring = &adapter->test_tx_ring;  	struct e1000_ring *rx_ring = &adapter->test_rx_ring;  	struct pci_dev *pdev = adapter->pdev; +	struct e1000_buffer *buffer_info;  	int i;  	if (tx_ring->desc && tx_ring->buffer_info) {  		for (i = 0; i < tx_ring->count; i++) { -			if (tx_ring->buffer_info[i].dma) +			buffer_info = &tx_ring->buffer_info[i]; + +			if (buffer_info->dma)  				dma_unmap_single(&pdev->dev, -					tx_ring->buffer_info[i].dma, -					tx_ring->buffer_info[i].length, -					DMA_TO_DEVICE); -			if (tx_ring->buffer_info[i].skb) -				dev_kfree_skb(tx_ring->buffer_info[i].skb); +						 buffer_info->dma, +						 buffer_info->length, +						 DMA_TO_DEVICE); +			if (buffer_info->skb) +				dev_kfree_skb(buffer_info->skb);  		}  	}  	if (rx_ring->desc && rx_ring->buffer_info) {  		for (i = 0; i < rx_ring->count; i++) { -			if (rx_ring->buffer_info[i].dma) +			buffer_info = &rx_ring->buffer_info[i]; + +			if (buffer_info->dma)  				dma_unmap_single(&pdev->dev, -					rx_ring->buffer_info[i].dma, -					2048, DMA_FROM_DEVICE); -			if (rx_ring->buffer_info[i].skb) -				dev_kfree_skb(rx_ring->buffer_info[i].skb); +						 buffer_info->dma, +						 2048, DMA_FROM_DEVICE); +			if (buffer_info->skb) +				dev_kfree_skb(buffer_info->skb);  		}  	} @@ -1138,8 +1141,7 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)  		tx_ring->count = E1000_DEFAULT_TXD;  	tx_ring->buffer_info = kcalloc(tx_ring->count, -				       sizeof(struct e1000_buffer), -				       GFP_KERNEL); +				       sizeof(struct e1000_buffer), GFP_KERNEL);  	if (!tx_ring->buffer_info) {  		ret_val = 1;  		goto err_nomem; @@ -1156,8 +1158,8 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)  	tx_ring->next_to_use = 0;  	tx_ring->next_to_clean = 0; -	ew32(TDBAL(0), ((u64) tx_ring->dma & 0x00000000FFFFFFFF)); -	ew32(TDBAH(0), ((u64) tx_ring->dma >> 32)); +	ew32(TDBAL(0), ((u64)tx_ring->dma & 0x00000000FFFFFFFF)); +	ew32(TDBAH(0), ((u64)tx_ring->dma >> 32));  	ew32(TDLEN(0), tx_ring->count * sizeof(struct e1000_tx_desc));  	ew32(TDH(0), 0);  	ew32(TDT(0), 0); @@ -1179,8 +1181,8 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)  		tx_ring->buffer_info[i].skb = skb;  		tx_ring->buffer_info[i].length = skb->len;  		tx_ring->buffer_info[i].dma = -			dma_map_single(&pdev->dev, skb->data, skb->len, -				       DMA_TO_DEVICE); +		    dma_map_single(&pdev->dev, skb->data, skb->len, +				   DMA_TO_DEVICE);  		if (dma_mapping_error(&pdev->dev,  				      tx_ring->buffer_info[i].dma)) {  			ret_val = 4; @@ -1200,8 +1202,7 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)  		rx_ring->count = E1000_DEFAULT_RXD;  	rx_ring->buffer_info = kcalloc(rx_ring->count, -				       sizeof(struct e1000_buffer), -				       GFP_KERNEL); +				       sizeof(struct e1000_buffer), GFP_KERNEL);  	if (!rx_ring->buffer_info) {  		ret_val = 5;  		goto err_nomem; @@ -1220,16 +1221,16 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)  	rctl = er32(RCTL);  	if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX))  		ew32(RCTL, rctl & ~E1000_RCTL_EN); -	ew32(RDBAL(0), ((u64) rx_ring->dma & 0xFFFFFFFF)); -	ew32(RDBAH(0), ((u64) rx_ring->dma >> 32)); +	ew32(RDBAL(0), ((u64)rx_ring->dma & 0xFFFFFFFF)); +	ew32(RDBAH(0), ((u64)rx_ring->dma >> 32));  	ew32(RDLEN(0), rx_ring->size);  	ew32(RDH(0), 0);  	ew32(RDT(0), 0);  	rctl = E1000_RCTL_EN | E1000_RCTL_BAM | E1000_RCTL_SZ_2048 | -		E1000_RCTL_UPE | E1000_RCTL_MPE | E1000_RCTL_LPE | -		E1000_RCTL_SBP | E1000_RCTL_SECRC | -		E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF | -		(adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT); +	    E1000_RCTL_UPE | E1000_RCTL_MPE | E1000_RCTL_LPE | +	    E1000_RCTL_SBP | E1000_RCTL_SECRC | +	    E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF | +	    (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT);  	ew32(RCTL, rctl);  	for (i = 0; i < rx_ring->count; i++) { @@ -1244,8 +1245,8 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)  		skb_reserve(skb, NET_IP_ALIGN);  		rx_ring->buffer_info[i].skb = skb;  		rx_ring->buffer_info[i].dma = -			dma_map_single(&pdev->dev, skb->data, 2048, -				       DMA_FROM_DEVICE); +		    dma_map_single(&pdev->dev, skb->data, 2048, +				   DMA_FROM_DEVICE);  		if (dma_mapping_error(&pdev->dev,  				      rx_ring->buffer_info[i].dma)) {  			ret_val = 8; @@ -1296,7 +1297,7 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter)  		ew32(CTRL, ctrl_reg);  		e1e_flush(); -		udelay(500); +		usleep_range(500, 1000);  		return 0;  	} @@ -1322,7 +1323,7 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter)  		e1e_wphy(hw, PHY_REG(2, 21), phy_reg);  		/* Assert SW reset for above settings to take effect */  		hw->phy.ops.commit(hw); -		mdelay(1); +		usleep_range(1000, 2000);  		/* Force Full Duplex */  		e1e_rphy(hw, PHY_REG(769, 16), &phy_reg);  		e1e_wphy(hw, PHY_REG(769, 16), phy_reg | 0x000C); @@ -1363,7 +1364,7 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter)  	/* force 1000, set loopback */  	e1e_wphy(hw, MII_BMCR, 0x4140); -	mdelay(250); +	msleep(250);  	/* Now set up the MAC to the same speed/duplex as the PHY. */  	ctrl_reg = er32(CTRL); @@ -1395,7 +1396,7 @@ static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter)  	if (hw->phy.type == e1000_phy_m88)  		e1000_phy_disable_receiver(adapter); -	udelay(500); +	usleep_range(500, 1000);  	return 0;  } @@ -1431,8 +1432,7 @@ static int e1000_set_82571_fiber_loopback(struct e1000_adapter *adapter)  	/* special write to serdes control register to enable SerDes analog  	 * loopback  	 */ -#define E1000_SERDES_LB_ON 0x410 -	ew32(SCTL, E1000_SERDES_LB_ON); +	ew32(SCTL, E1000_SCTL_ENABLE_SERDES_LOOPBACK);  	e1e_flush();  	usleep_range(10000, 20000); @@ -1526,8 +1526,7 @@ static void e1000_loopback_cleanup(struct e1000_adapter *adapter)  	case e1000_82572:  		if (hw->phy.media_type == e1000_media_type_fiber ||  		    hw->phy.media_type == e1000_media_type_internal_serdes) { -#define E1000_SERDES_LB_OFF 0x400 -			ew32(SCTL, E1000_SERDES_LB_OFF); +			ew32(SCTL, E1000_SCTL_DISABLE_SERDES_LOOPBACK);  			e1e_flush();  			usleep_range(10000, 20000);  			break; @@ -1564,7 +1563,7 @@ static int e1000_check_lbtest_frame(struct sk_buff *skb,  	frame_size &= ~1;  	if (*(skb->data + 3) == 0xFF)  		if ((*(skb->data + frame_size / 2 + 10) == 0xBE) && -		   (*(skb->data + frame_size / 2 + 12) == 0xAF)) +		    (*(skb->data + frame_size / 2 + 12) == 0xAF))  			return 0;  	return 13;  } @@ -1575,6 +1574,7 @@ static int e1000_run_loopback_test(struct e1000_adapter *adapter)  	struct e1000_ring *rx_ring = &adapter->test_rx_ring;  	struct pci_dev *pdev = adapter->pdev;  	struct e1000_hw *hw = &adapter->hw; +	struct e1000_buffer *buffer_info;  	int i, j, k, l;  	int lc;  	int good_cnt; @@ -1595,14 +1595,17 @@ static int e1000_run_loopback_test(struct e1000_adapter *adapter)  	k = 0;  	l = 0; -	for (j = 0; j <= lc; j++) { /* loop count loop */ -		for (i = 0; i < 64; i++) { /* send the packets */ -			e1000_create_lbtest_frame(tx_ring->buffer_info[k].skb, -						  1024); +	/* loop count loop */ +	for (j = 0; j <= lc; j++) { +		/* send the packets */ +		for (i = 0; i < 64; i++) { +			buffer_info = &tx_ring->buffer_info[k]; + +			e1000_create_lbtest_frame(buffer_info->skb, 1024);  			dma_sync_single_for_device(&pdev->dev, -					tx_ring->buffer_info[k].dma, -					tx_ring->buffer_info[k].length, -					DMA_TO_DEVICE); +						   buffer_info->dma, +						   buffer_info->length, +						   DMA_TO_DEVICE);  			k++;  			if (k == tx_ring->count)  				k = 0; @@ -1612,13 +1615,16 @@ static int e1000_run_loopback_test(struct e1000_adapter *adapter)  		msleep(200);  		time = jiffies; /* set the start time for the receive */  		good_cnt = 0; -		do { /* receive the sent packets */ +		/* receive the sent packets */ +		do { +			buffer_info = &rx_ring->buffer_info[l]; +  			dma_sync_single_for_cpu(&pdev->dev, -					rx_ring->buffer_info[l].dma, 2048, -					DMA_FROM_DEVICE); +						buffer_info->dma, 2048, +						DMA_FROM_DEVICE); -			ret_val = e1000_check_lbtest_frame( -					rx_ring->buffer_info[l].skb, 1024); +			ret_val = e1000_check_lbtest_frame(buffer_info->skb, +							   1024);  			if (!ret_val)  				good_cnt++;  			l++; @@ -1637,7 +1643,7 @@ static int e1000_run_loopback_test(struct e1000_adapter *adapter)  			ret_val = 14; /* error code for time out error */  			break;  		} -	} /* end loop count loop */ +	}  	return ret_val;  } @@ -1696,7 +1702,7 @@ static int e1000_link_test(struct e1000_adapter *adapter, u64 *data)  			/* On some Phy/switch combinations, link establishment  			 * can take a few seconds more than expected.  			 */ -			msleep(5000); +			msleep_interruptible(5000);  		if (!(er32(STATUS) & E1000_STATUS_LU))  			*data = 1; @@ -1980,12 +1986,12 @@ static void e1000_get_ethtool_stats(struct net_device *netdev,  	for (i = 0; i < E1000_GLOBAL_STATS_LEN; i++) {  		switch (e1000_gstrings_stats[i].type) {  		case NETDEV_STATS: -			p = (char *) &net_stats + -					e1000_gstrings_stats[i].stat_offset; +			p = (char *)&net_stats + +			    e1000_gstrings_stats[i].stat_offset;  			break;  		case E1000_STATS: -			p = (char *) adapter + -					e1000_gstrings_stats[i].stat_offset; +			p = (char *)adapter + +			    e1000_gstrings_stats[i].stat_offset;  			break;  		default:  			data[i] = 0; @@ -1993,7 +1999,7 @@ static void e1000_get_ethtool_stats(struct net_device *netdev,  		}  		data[i] = (e1000_gstrings_stats[i].sizeof_stat == -			sizeof(u64)) ? *(u64 *)p : *(u32 *)p; +			   sizeof(u64)) ? *(u64 *)p : *(u32 *)p;  	}  } @@ -2069,23 +2075,20 @@ static int e1000e_get_eee(struct net_device *netdev, struct ethtool_eee *edata)  {  	struct e1000_adapter *adapter = netdev_priv(netdev);  	struct e1000_hw *hw = &adapter->hw; -	u16 cap_addr, adv_addr, lpa_addr, pcs_stat_addr, phy_data, lpi_ctrl; -	u32 status, ret_val; +	u16 cap_addr, lpa_addr, pcs_stat_addr, phy_data; +	u32 ret_val; -	if (!(adapter->flags & FLAG_IS_ICH) || -	    !(adapter->flags2 & FLAG2_HAS_EEE)) +	if (!(adapter->flags2 & FLAG2_HAS_EEE))  		return -EOPNOTSUPP;  	switch (hw->phy.type) {  	case e1000_phy_82579:  		cap_addr = I82579_EEE_CAPABILITY; -		adv_addr = I82579_EEE_ADVERTISEMENT;  		lpa_addr = I82579_EEE_LP_ABILITY;  		pcs_stat_addr = I82579_EEE_PCS_STATUS;  		break;  	case e1000_phy_i217:  		cap_addr = I217_EEE_CAPABILITY; -		adv_addr = I217_EEE_ADVERTISEMENT;  		lpa_addr = I217_EEE_LP_ABILITY;  		pcs_stat_addr = I217_EEE_PCS_STATUS;  		break; @@ -2104,10 +2107,7 @@ static int e1000e_get_eee(struct net_device *netdev, struct ethtool_eee *edata)  	edata->supported = mmd_eee_cap_to_ethtool_sup_t(phy_data);  	/* EEE Advertised */ -	ret_val = e1000_read_emi_reg_locked(hw, adv_addr, &phy_data); -	if (ret_val) -		goto release; -	edata->advertised = mmd_eee_adv_to_ethtool_adv_t(phy_data); +	edata->advertised = mmd_eee_adv_to_ethtool_adv_t(adapter->eee_advert);  	/* EEE Link Partner Advertised */  	ret_val = e1000_read_emi_reg_locked(hw, lpa_addr, &phy_data); @@ -2125,25 +2125,11 @@ release:  	if (ret_val)  		return -ENODATA; -	e1e_rphy(hw, I82579_LPI_CTRL, &lpi_ctrl); -	status = er32(STATUS); -  	/* Result of the EEE auto negotiation - there is no register that  	 * has the status of the EEE negotiation so do a best-guess based -	 * on whether both Tx and Rx LPI indications have been received or -	 * base it on the link speed, the EEE advertised speeds on both ends -	 * and the speeds on which EEE is enabled locally. +	 * on whether Tx or Rx LPI indications have been received.  	 */ -	if (((phy_data & E1000_EEE_TX_LPI_RCVD) && -	     (phy_data & E1000_EEE_RX_LPI_RCVD)) || -	    ((status & E1000_STATUS_SPEED_100) && -	     (edata->advertised & ADVERTISED_100baseT_Full) && -	     (edata->lp_advertised & ADVERTISED_100baseT_Full) && -	     (lpi_ctrl & I82579_LPI_CTRL_100_ENABLE)) || -	    ((status & E1000_STATUS_SPEED_1000) && -	     (edata->advertised & ADVERTISED_1000baseT_Full) && -	     (edata->lp_advertised & ADVERTISED_1000baseT_Full) && -	     (lpi_ctrl & I82579_LPI_CTRL_1000_ENABLE))) +	if (phy_data & (E1000_EEE_TX_LPI_RCVD | E1000_EEE_RX_LPI_RCVD))  		edata->eee_active = true;  	edata->eee_enabled = !hw->dev_spec.ich8lan.eee_disable; @@ -2160,19 +2146,10 @@ static int e1000e_set_eee(struct net_device *netdev, struct ethtool_eee *edata)  	struct ethtool_eee eee_curr;  	s32 ret_val; -	if (!(adapter->flags & FLAG_IS_ICH) || -	    !(adapter->flags2 & FLAG2_HAS_EEE)) -		return -EOPNOTSUPP; -  	ret_val = e1000e_get_eee(netdev, &eee_curr);  	if (ret_val)  		return ret_val; -	if (eee_curr.advertised != edata->advertised) { -		e_err("Setting EEE advertisement is not supported\n"); -		return -EINVAL; -	} -  	if (eee_curr.tx_lpi_enabled != edata->tx_lpi_enabled) {  		e_err("Setting EEE tx-lpi is not supported\n");  		return -EINVAL; @@ -2183,16 +2160,21 @@ static int e1000e_set_eee(struct net_device *netdev, struct ethtool_eee *edata)  		return -EINVAL;  	} -	if (hw->dev_spec.ich8lan.eee_disable != !edata->eee_enabled) { -		hw->dev_spec.ich8lan.eee_disable = !edata->eee_enabled; - -		/* reset the link */ -		if (netif_running(netdev)) -			e1000e_reinit_locked(adapter); -		else -			e1000e_reset(adapter); +	if (edata->advertised & ~(ADVERTISE_100_FULL | ADVERTISE_1000_FULL)) { +		e_err("EEE advertisement supports only 100TX and/or 1000T full-duplex\n"); +		return -EINVAL;  	} +	adapter->eee_advert = ethtool_adv_to_mmd_eee_adv_t(edata->advertised); + +	hw->dev_spec.ich8lan.eee_disable = !edata->eee_enabled; + +	/* reset the link */ +	if (netif_running(netdev)) +		e1000e_reinit_locked(adapter); +	else +		e1000e_reset(adapter); +  	return 0;  } diff --git a/drivers/net/ethernet/intel/e1000e/hw.h b/drivers/net/ethernet/intel/e1000e/hw.h index 1e6b889aee8..84850f7a23e 100644 --- a/drivers/net/ethernet/intel/e1000e/hw.h +++ b/drivers/net/ethernet/intel/e1000e/hw.h @@ -167,7 +167,7 @@ enum e1000_1000t_rx_status {  	e1000_1000t_rx_status_undefined = 0xFF  }; -enum e1000_rev_polarity{ +enum e1000_rev_polarity {  	e1000_rev_polarity_normal = 0,  	e1000_rev_polarity_reversed,  	e1000_rev_polarity_undefined = 0xFF @@ -545,7 +545,7 @@ struct e1000_mac_info {  	u16 mta_reg_count;  	/* Maximum size of the MTA register table in all supported adapters */ -	#define MAX_MTA_REG 128 +#define MAX_MTA_REG 128  	u32 mta_shadow[MAX_MTA_REG];  	u16 rar_entry_count; diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c index 121a865c7fb..ad9d8f2dd86 100644 --- a/drivers/net/ethernet/intel/e1000e/ich8lan.c +++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c @@ -61,15 +61,15 @@  /* Offset 04h HSFSTS */  union ich8_hws_flash_status {  	struct ich8_hsfsts { -		u16 flcdone    :1; /* bit 0 Flash Cycle Done */ -		u16 flcerr     :1; /* bit 1 Flash Cycle Error */ -		u16 dael       :1; /* bit 2 Direct Access error Log */ -		u16 berasesz   :2; /* bit 4:3 Sector Erase Size */ -		u16 flcinprog  :1; /* bit 5 flash cycle in Progress */ -		u16 reserved1  :2; /* bit 13:6 Reserved */ -		u16 reserved2  :6; /* bit 13:6 Reserved */ -		u16 fldesvalid :1; /* bit 14 Flash Descriptor Valid */ -		u16 flockdn    :1; /* bit 15 Flash Config Lock-Down */ +		u16 flcdone:1;	/* bit 0 Flash Cycle Done */ +		u16 flcerr:1;	/* bit 1 Flash Cycle Error */ +		u16 dael:1;	/* bit 2 Direct Access error Log */ +		u16 berasesz:2;	/* bit 4:3 Sector Erase Size */ +		u16 flcinprog:1;	/* bit 5 flash cycle in Progress */ +		u16 reserved1:2;	/* bit 13:6 Reserved */ +		u16 reserved2:6;	/* bit 13:6 Reserved */ +		u16 fldesvalid:1;	/* bit 14 Flash Descriptor Valid */ +		u16 flockdn:1;	/* bit 15 Flash Config Lock-Down */  	} hsf_status;  	u16 regval;  }; @@ -78,11 +78,11 @@ union ich8_hws_flash_status {  /* Offset 06h FLCTL */  union ich8_hws_flash_ctrl {  	struct ich8_hsflctl { -		u16 flcgo      :1;   /* 0 Flash Cycle Go */ -		u16 flcycle    :2;   /* 2:1 Flash Cycle */ -		u16 reserved   :5;   /* 7:3 Reserved  */ -		u16 fldbcount  :2;   /* 9:8 Flash Data Byte Count */ -		u16 flockdn    :6;   /* 15:10 Reserved */ +		u16 flcgo:1;	/* 0 Flash Cycle Go */ +		u16 flcycle:2;	/* 2:1 Flash Cycle */ +		u16 reserved:5;	/* 7:3 Reserved  */ +		u16 fldbcount:2;	/* 9:8 Flash Data Byte Count */ +		u16 flockdn:6;	/* 15:10 Reserved */  	} hsf_ctrl;  	u16 regval;  }; @@ -90,10 +90,10 @@ union ich8_hws_flash_ctrl {  /* ICH Flash Region Access Permissions */  union ich8_hws_flash_regacc {  	struct ich8_flracc { -		u32 grra      :8; /* 0:7 GbE region Read Access */ -		u32 grwa      :8; /* 8:15 GbE region Write Access */ -		u32 gmrag     :8; /* 23:16 GbE Master Read Access Grant */ -		u32 gmwag     :8; /* 31:24 GbE Master Write Access Grant */ +		u32 grra:8;	/* 0:7 GbE region Read Access */ +		u32 grwa:8;	/* 8:15 GbE region Write Access */ +		u32 gmrag:8;	/* 23:16 GbE Master Read Access Grant */ +		u32 gmwag:8;	/* 31:24 GbE Master Write Access Grant */  	} hsf_flregacc;  	u16 regval;  }; @@ -142,6 +142,7 @@ static void e1000_rar_set_pch2lan(struct e1000_hw *hw, u8 *addr, u32 index);  static void e1000_rar_set_pch_lpt(struct e1000_hw *hw, u8 *addr, u32 index);  static s32 e1000_k1_workaround_lv(struct e1000_hw *hw);  static void e1000_gate_hw_phy_config_ich8lan(struct e1000_hw *hw, bool gate); +static s32 e1000_setup_copper_link_pch_lpt(struct e1000_hw *hw);  static inline u16 __er16flash(struct e1000_hw *hw, unsigned long reg)  { @@ -312,7 +313,7 @@ static s32 e1000_init_phy_workarounds_pchlan(struct e1000_hw *hw)  		mac_reg &= ~E1000_CTRL_LANPHYPC_VALUE;  		ew32(CTRL, mac_reg);  		e1e_flush(); -		udelay(10); +		usleep_range(10, 20);  		mac_reg &= ~E1000_CTRL_LANPHYPC_OVERRIDE;  		ew32(CTRL, mac_reg);  		e1e_flush(); @@ -548,8 +549,8 @@ static s32 e1000_init_nvm_params_ich8lan(struct e1000_hw *hw)  	/* find total size of the NVM, then cut in half since the total  	 * size represents two separate NVM banks.  	 */ -	nvm->flash_bank_size = (sector_end_addr - sector_base_addr) -				<< FLASH_SECTOR_ADDR_SHIFT; +	nvm->flash_bank_size = ((sector_end_addr - sector_base_addr) +				<< FLASH_SECTOR_ADDR_SHIFT);  	nvm->flash_bank_size /= 2;  	/* Adjust to word count */  	nvm->flash_bank_size /= sizeof(u16); @@ -636,6 +637,8 @@ static s32 e1000_init_mac_params_ich8lan(struct e1000_hw *hw)  	if (mac->type == e1000_pch_lpt) {  		mac->rar_entry_count = E1000_PCH_LPT_RAR_ENTRIES;  		mac->ops.rar_set = e1000_rar_set_pch_lpt; +		mac->ops.setup_physical_interface = +		    e1000_setup_copper_link_pch_lpt;  	}  	/* Enable PCS Lock-loss workaround for ICH8 */ @@ -692,7 +695,7 @@ s32 e1000_read_emi_reg_locked(struct e1000_hw *hw, u16 addr, u16 *data)   *   *  Assumes the SW/FW/HW Semaphore is already acquired.   **/ -static s32 e1000_write_emi_reg_locked(struct e1000_hw *hw, u16 addr, u16 data) +s32 e1000_write_emi_reg_locked(struct e1000_hw *hw, u16 addr, u16 data)  {  	return __e1000_access_emi_reg_locked(hw, addr, &data, false);  } @@ -709,11 +712,22 @@ static s32 e1000_set_eee_pchlan(struct e1000_hw *hw)  {  	struct e1000_dev_spec_ich8lan *dev_spec = &hw->dev_spec.ich8lan;  	s32 ret_val; -	u16 lpi_ctrl; +	u16 lpa, pcs_status, adv, adv_addr, lpi_ctrl, data; -	if ((hw->phy.type != e1000_phy_82579) && -	    (hw->phy.type != e1000_phy_i217)) +	switch (hw->phy.type) { +	case e1000_phy_82579: +		lpa = I82579_EEE_LP_ABILITY; +		pcs_status = I82579_EEE_PCS_STATUS; +		adv_addr = I82579_EEE_ADVERTISEMENT; +		break; +	case e1000_phy_i217: +		lpa = I217_EEE_LP_ABILITY; +		pcs_status = I217_EEE_PCS_STATUS; +		adv_addr = I217_EEE_ADVERTISEMENT; +		break; +	default:  		return 0; +	}  	ret_val = hw->phy.ops.acquire(hw);  	if (ret_val) @@ -728,34 +742,24 @@ static s32 e1000_set_eee_pchlan(struct e1000_hw *hw)  	/* Enable EEE if not disabled by user */  	if (!dev_spec->eee_disable) { -		u16 lpa, pcs_status, data; -  		/* Save off link partner's EEE ability */ -		switch (hw->phy.type) { -		case e1000_phy_82579: -			lpa = I82579_EEE_LP_ABILITY; -			pcs_status = I82579_EEE_PCS_STATUS; -			break; -		case e1000_phy_i217: -			lpa = I217_EEE_LP_ABILITY; -			pcs_status = I217_EEE_PCS_STATUS; -			break; -		default: -			ret_val = -E1000_ERR_PHY; -			goto release; -		}  		ret_val = e1000_read_emi_reg_locked(hw, lpa,  						    &dev_spec->eee_lp_ability);  		if (ret_val)  			goto release; +		/* Read EEE advertisement */ +		ret_val = e1000_read_emi_reg_locked(hw, adv_addr, &adv); +		if (ret_val) +			goto release; +  		/* Enable EEE only for speeds in which the link partner is -		 * EEE capable. +		 * EEE capable and for which we advertise EEE.  		 */ -		if (dev_spec->eee_lp_ability & I82579_EEE_1000_SUPPORTED) +		if (adv & dev_spec->eee_lp_ability & I82579_EEE_1000_SUPPORTED)  			lpi_ctrl |= I82579_LPI_CTRL_1000_ENABLE; -		if (dev_spec->eee_lp_ability & I82579_EEE_100_SUPPORTED) { +		if (adv & dev_spec->eee_lp_ability & I82579_EEE_100_SUPPORTED) {  			e1e_rphy_locked(hw, MII_LPA, &data);  			if (data & LPA_100FULL)  				lpi_ctrl |= I82579_LPI_CTRL_100_ENABLE; @@ -767,13 +771,13 @@ static s32 e1000_set_eee_pchlan(struct e1000_hw *hw)  				dev_spec->eee_lp_ability &=  				    ~I82579_EEE_100_SUPPORTED;  		} - -		/* R/Clr IEEE MMD 3.1 bits 11:10 - Tx/Rx LPI Received */ -		ret_val = e1000_read_emi_reg_locked(hw, pcs_status, &data); -		if (ret_val) -			goto release;  	} +	/* R/Clr IEEE MMD 3.1 bits 11:10 - Tx/Rx LPI Received */ +	ret_val = e1000_read_emi_reg_locked(hw, pcs_status, &data); +	if (ret_val) +		goto release; +  	ret_val = e1e_wphy_locked(hw, I82579_LPI_CTRL, lpi_ctrl);  release:  	hw->phy.ops.release(hw); @@ -835,6 +839,94 @@ release:  }  /** + *  e1000_platform_pm_pch_lpt - Set platform power management values + *  @hw: pointer to the HW structure + *  @link: bool indicating link status + * + *  Set the Latency Tolerance Reporting (LTR) values for the "PCIe-like" + *  GbE MAC in the Lynx Point PCH based on Rx buffer size and link speed + *  when link is up (which must not exceed the maximum latency supported + *  by the platform), otherwise specify there is no LTR requirement. + *  Unlike true-PCIe devices which set the LTR maximum snoop/no-snoop + *  latencies in the LTR Extended Capability Structure in the PCIe Extended + *  Capability register set, on this device LTR is set by writing the + *  equivalent snoop/no-snoop latencies in the LTRV register in the MAC and + *  set the SEND bit to send an Intel On-chip System Fabric sideband (IOSF-SB) + *  message to the PMC. + **/ +static s32 e1000_platform_pm_pch_lpt(struct e1000_hw *hw, bool link) +{ +	u32 reg = link << (E1000_LTRV_REQ_SHIFT + E1000_LTRV_NOSNOOP_SHIFT) | +	    link << E1000_LTRV_REQ_SHIFT | E1000_LTRV_SEND; +	u16 lat_enc = 0;	/* latency encoded */ + +	if (link) { +		u16 speed, duplex, scale = 0; +		u16 max_snoop, max_nosnoop; +		u16 max_ltr_enc;	/* max LTR latency encoded */ +		s64 lat_ns;	/* latency (ns) */ +		s64 value; +		u32 rxa; + +		if (!hw->adapter->max_frame_size) { +			e_dbg("max_frame_size not set.\n"); +			return -E1000_ERR_CONFIG; +		} + +		hw->mac.ops.get_link_up_info(hw, &speed, &duplex); +		if (!speed) { +			e_dbg("Speed not set.\n"); +			return -E1000_ERR_CONFIG; +		} + +		/* Rx Packet Buffer Allocation size (KB) */ +		rxa = er32(PBA) & E1000_PBA_RXA_MASK; + +		/* Determine the maximum latency tolerated by the device. +		 * +		 * Per the PCIe spec, the tolerated latencies are encoded as +		 * a 3-bit encoded scale (only 0-5 are valid) multiplied by +		 * a 10-bit value (0-1023) to provide a range from 1 ns to +		 * 2^25*(2^10-1) ns.  The scale is encoded as 0=2^0ns, +		 * 1=2^5ns, 2=2^10ns,...5=2^25ns. +		 */ +		lat_ns = ((s64)rxa * 1024 - +			  (2 * (s64)hw->adapter->max_frame_size)) * 8 * 1000; +		if (lat_ns < 0) +			lat_ns = 0; +		else +			do_div(lat_ns, speed); + +		value = lat_ns; +		while (value > PCI_LTR_VALUE_MASK) { +			scale++; +			value = DIV_ROUND_UP(value, (1 << 5)); +		} +		if (scale > E1000_LTRV_SCALE_MAX) { +			e_dbg("Invalid LTR latency scale %d\n", scale); +			return -E1000_ERR_CONFIG; +		} +		lat_enc = (u16)((scale << PCI_LTR_SCALE_SHIFT) | value); + +		/* Determine the maximum latency tolerated by the platform */ +		pci_read_config_word(hw->adapter->pdev, E1000_PCI_LTR_CAP_LPT, +				     &max_snoop); +		pci_read_config_word(hw->adapter->pdev, +				     E1000_PCI_LTR_CAP_LPT + 2, &max_nosnoop); +		max_ltr_enc = max_t(u16, max_snoop, max_nosnoop); + +		if (lat_enc > max_ltr_enc) +			lat_enc = max_ltr_enc; +	} + +	/* Set Snoop and No-Snoop latencies the same */ +	reg |= lat_enc | (lat_enc << E1000_LTRV_NOSNOOP_SHIFT); +	ew32(LTRV, reg); + +	return 0; +} + +/**   *  e1000_check_for_copper_link_ich8lan - Check for link (Copper)   *  @hw: pointer to the HW structure   * @@ -871,6 +963,34 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw)  			return ret_val;  	} +	/* When connected at 10Mbps half-duplex, 82579 parts are excessively +	 * aggressive resulting in many collisions. To avoid this, increase +	 * the IPG and reduce Rx latency in the PHY. +	 */ +	if ((hw->mac.type == e1000_pch2lan) && link) { +		u32 reg; +		reg = er32(STATUS); +		if (!(reg & (E1000_STATUS_FD | E1000_STATUS_SPEED_MASK))) { +			reg = er32(TIPG); +			reg &= ~E1000_TIPG_IPGT_MASK; +			reg |= 0xFF; +			ew32(TIPG, reg); + +			/* Reduce Rx latency in analog PHY */ +			ret_val = hw->phy.ops.acquire(hw); +			if (ret_val) +				return ret_val; + +			ret_val = +			    e1000_write_emi_reg_locked(hw, I82579_RX_CONFIG, 0); + +			hw->phy.ops.release(hw); + +			if (ret_val) +				return ret_val; +		} +	} +  	/* Work-around I218 hang issue */  	if ((hw->adapter->pdev->device == E1000_DEV_ID_PCH_LPTLP_I218_LM) ||  	    (hw->adapter->pdev->device == E1000_DEV_ID_PCH_LPTLP_I218_V)) { @@ -879,6 +999,15 @@ static s32 e1000_check_for_copper_link_ich8lan(struct e1000_hw *hw)  			return ret_val;  	} +	if (hw->mac.type == e1000_pch_lpt) { +		/* Set platform power management values for +		 * Latency Tolerance Reporting (LTR) +		 */ +		ret_val = e1000_platform_pm_pch_lpt(hw, link); +		if (ret_val) +			return ret_val; +	} +  	/* Clear link partner's EEE ability */  	hw->dev_spec.ich8lan.eee_lp_ability = 0; @@ -1002,10 +1131,6 @@ static s32 e1000_get_variants_ich8lan(struct e1000_adapter *adapter)  	    (er32(FWSM) & E1000_ICH_FWSM_FW_VALID))  		adapter->flags2 |= FLAG2_PCIM2PCI_ARBITER_WA; -	/* Disable EEE by default until IEEE802.3az spec is finalized */ -	if (adapter->flags2 & FLAG2_HAS_EEE) -		adapter->hw.dev_spec.ich8lan.eee_disable = true; -  	return 0;  } @@ -1134,9 +1259,9 @@ static bool e1000_check_mng_mode_ich8lan(struct e1000_hw *hw)  	u32 fwsm;  	fwsm = er32(FWSM); -	return (fwsm & E1000_ICH_FWSM_FW_VALID) && -	       ((fwsm & E1000_FWSM_MODE_MASK) == -		(E1000_ICH_MNG_IAMT_MODE << E1000_FWSM_MODE_SHIFT)); +	return ((fwsm & E1000_ICH_FWSM_FW_VALID) && +		((fwsm & E1000_FWSM_MODE_MASK) == +		 (E1000_ICH_MNG_IAMT_MODE << E1000_FWSM_MODE_SHIFT)));  }  /** @@ -1153,7 +1278,7 @@ static bool e1000_check_mng_mode_pchlan(struct e1000_hw *hw)  	fwsm = er32(FWSM);  	return (fwsm & E1000_ICH_FWSM_FW_VALID) && -	       (fwsm & (E1000_ICH_MNG_IAMT_MODE << E1000_FWSM_MODE_SHIFT)); +	    (fwsm & (E1000_ICH_MNG_IAMT_MODE << E1000_FWSM_MODE_SHIFT));  }  /** @@ -1440,8 +1565,7 @@ static s32 e1000_sw_lcd_config_ich8lan(struct e1000_hw *hw)  	word_addr = (u16)(cnf_base_addr << 1);  	for (i = 0; i < cnf_size; i++) { -		ret_val = e1000_read_nvm(hw, (word_addr + i * 2), 1, -					 ®_data); +		ret_val = e1000_read_nvm(hw, (word_addr + i * 2), 1, ®_data);  		if (ret_val)  			goto release; @@ -1501,13 +1625,13 @@ static s32 e1000_k1_gig_workaround_hv(struct e1000_hw *hw, bool link)  			if (ret_val)  				goto release; -			status_reg &= BM_CS_STATUS_LINK_UP | -			              BM_CS_STATUS_RESOLVED | -			              BM_CS_STATUS_SPEED_MASK; +			status_reg &= (BM_CS_STATUS_LINK_UP | +				       BM_CS_STATUS_RESOLVED | +				       BM_CS_STATUS_SPEED_MASK);  			if (status_reg == (BM_CS_STATUS_LINK_UP | -			                   BM_CS_STATUS_RESOLVED | -			                   BM_CS_STATUS_SPEED_1000)) +					   BM_CS_STATUS_RESOLVED | +					   BM_CS_STATUS_SPEED_1000))  				k1_enable = false;  		} @@ -1516,13 +1640,13 @@ static s32 e1000_k1_gig_workaround_hv(struct e1000_hw *hw, bool link)  			if (ret_val)  				goto release; -			status_reg &= HV_M_STATUS_LINK_UP | -			              HV_M_STATUS_AUTONEG_COMPLETE | -			              HV_M_STATUS_SPEED_MASK; +			status_reg &= (HV_M_STATUS_LINK_UP | +				       HV_M_STATUS_AUTONEG_COMPLETE | +				       HV_M_STATUS_SPEED_MASK);  			if (status_reg == (HV_M_STATUS_LINK_UP | -			                   HV_M_STATUS_AUTONEG_COMPLETE | -			                   HV_M_STATUS_SPEED_1000)) +					   HV_M_STATUS_AUTONEG_COMPLETE | +					   HV_M_STATUS_SPEED_1000))  				k1_enable = false;  		} @@ -1579,7 +1703,7 @@ s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable)  	if (ret_val)  		return ret_val; -	udelay(20); +	usleep_range(20, 40);  	ctrl_ext = er32(CTRL_EXT);  	ctrl_reg = er32(CTRL); @@ -1589,11 +1713,11 @@ s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable)  	ew32(CTRL_EXT, ctrl_ext | E1000_CTRL_EXT_SPD_BYPS);  	e1e_flush(); -	udelay(20); +	usleep_range(20, 40);  	ew32(CTRL, ctrl_reg);  	ew32(CTRL_EXT, ctrl_ext);  	e1e_flush(); -	udelay(20); +	usleep_range(20, 40);  	return 0;  } @@ -1667,7 +1791,6 @@ release:  	return ret_val;  } -  /**   *  e1000_set_mdio_slow_mode_hv - Set slow MDIO access mode   *  @hw:   pointer to the HW structure @@ -1834,7 +1957,7 @@ s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable)  		 * SHRAL/H) and initial CRC values to the MAC  		 */  		for (i = 0; i < (hw->mac.rar_entry_count + 4); i++) { -			u8 mac_addr[ETH_ALEN] = {0}; +			u8 mac_addr[ETH_ALEN] = { 0 };  			u32 addr_high, addr_low;  			addr_high = er32(RAH(i)); @@ -1865,8 +1988,8 @@ s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable)  		ew32(RCTL, mac_reg);  		ret_val = e1000e_read_kmrn_reg(hw, -						E1000_KMRNCTRLSTA_CTRL_OFFSET, -						&data); +					       E1000_KMRNCTRLSTA_CTRL_OFFSET, +					       &data);  		if (ret_val)  			return ret_val;  		ret_val = e1000e_write_kmrn_reg(hw, @@ -1875,8 +1998,8 @@ s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable)  		if (ret_val)  			return ret_val;  		ret_val = e1000e_read_kmrn_reg(hw, -						E1000_KMRNCTRLSTA_HD_CTRL, -						&data); +					       E1000_KMRNCTRLSTA_HD_CTRL, +					       &data);  		if (ret_val)  			return ret_val;  		data &= ~(0xF << 8); @@ -1923,8 +2046,8 @@ s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable)  		ew32(RCTL, mac_reg);  		ret_val = e1000e_read_kmrn_reg(hw, -						E1000_KMRNCTRLSTA_CTRL_OFFSET, -						&data); +					       E1000_KMRNCTRLSTA_CTRL_OFFSET, +					       &data);  		if (ret_val)  			return ret_val;  		ret_val = e1000e_write_kmrn_reg(hw, @@ -1933,8 +2056,8 @@ s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable)  		if (ret_val)  			return ret_val;  		ret_val = e1000e_read_kmrn_reg(hw, -						E1000_KMRNCTRLSTA_HD_CTRL, -						&data); +					       E1000_KMRNCTRLSTA_HD_CTRL, +					       &data);  		if (ret_val)  			return ret_val;  		data &= ~(0xF << 8); @@ -2100,7 +2223,7 @@ static void e1000_lan_init_done_ich8lan(struct e1000_hw *hw)  	do {  		data = er32(STATUS);  		data &= E1000_STATUS_LAN_INIT_DONE; -		udelay(100); +		usleep_range(100, 200);  	} while ((!data) && --loop);  	/* If basic configuration is incomplete before the above loop @@ -2445,7 +2568,7 @@ static s32 e1000_valid_nvm_bank_detect_ich8lan(struct e1000_hw *hw, u32 *bank)  		/* Check bank 0 */  		ret_val = e1000_read_flash_byte_ich8lan(hw, act_offset, -		                                        &sig_byte); +							&sig_byte);  		if (ret_val)  			return ret_val;  		if ((sig_byte & E1000_ICH_NVM_VALID_SIG_MASK) == @@ -2456,8 +2579,8 @@ static s32 e1000_valid_nvm_bank_detect_ich8lan(struct e1000_hw *hw, u32 *bank)  		/* Check bank 1 */  		ret_val = e1000_read_flash_byte_ich8lan(hw, act_offset + -		                                        bank1_offset, -		                                        &sig_byte); +							bank1_offset, +							&sig_byte);  		if (ret_val)  			return ret_val;  		if ((sig_byte & E1000_ICH_NVM_VALID_SIG_MASK) == @@ -2510,8 +2633,8 @@ static s32 e1000_read_nvm_ich8lan(struct e1000_hw *hw, u16 offset, u16 words,  	ret_val = 0;  	for (i = 0; i < words; i++) { -		if (dev_spec->shadow_ram[offset+i].modified) { -			data[i] = dev_spec->shadow_ram[offset+i].value; +		if (dev_spec->shadow_ram[offset + i].modified) { +			data[i] = dev_spec->shadow_ram[offset + i].value;  		} else {  			ret_val = e1000_read_flash_word_ich8lan(hw,  								act_offset + i, @@ -2696,8 +2819,8 @@ static s32 e1000_read_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,  	if (size < 1  || size > 2 || offset > ICH_FLASH_LINEAR_ADDR_MASK)  		return -E1000_ERR_NVM; -	flash_linear_addr = (ICH_FLASH_LINEAR_ADDR_MASK & offset) + -			    hw->nvm.flash_base_addr; +	flash_linear_addr = ((ICH_FLASH_LINEAR_ADDR_MASK & offset) + +			     hw->nvm.flash_base_addr);  	do {  		udelay(1); @@ -2714,8 +2837,9 @@ static s32 e1000_read_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,  		ew32flash(ICH_FLASH_FADDR, flash_linear_addr); -		ret_val = e1000_flash_cycle_ich8lan(hw, -						ICH_FLASH_READ_COMMAND_TIMEOUT); +		ret_val = +		    e1000_flash_cycle_ich8lan(hw, +					      ICH_FLASH_READ_COMMAND_TIMEOUT);  		/* Check if FCERR is set to 1, if set to 1, clear it  		 * and try the whole sequence a few more times, else @@ -2774,8 +2898,8 @@ static s32 e1000_write_nvm_ich8lan(struct e1000_hw *hw, u16 offset, u16 words,  	nvm->ops.acquire(hw);  	for (i = 0; i < words; i++) { -		dev_spec->shadow_ram[offset+i].modified = true; -		dev_spec->shadow_ram[offset+i].value = data[i]; +		dev_spec->shadow_ram[offset + i].modified = true; +		dev_spec->shadow_ram[offset + i].value = data[i];  	}  	nvm->ops.release(hw); @@ -2844,8 +2968,8 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)  			data = dev_spec->shadow_ram[i].value;  		} else {  			ret_val = e1000_read_flash_word_ich8lan(hw, i + -			                                        old_bank_offset, -			                                        &data); +								old_bank_offset, +								&data);  			if (ret_val)  				break;  		} @@ -2863,7 +2987,7 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)  		/* Convert offset to bytes. */  		act_offset = (i + new_bank_offset) << 1; -		udelay(100); +		usleep_range(100, 200);  		/* Write the bytes to the new bank. */  		ret_val = e1000_retry_write_flash_byte_ich8lan(hw,  							       act_offset, @@ -2871,10 +2995,10 @@ static s32 e1000_update_nvm_checksum_ich8lan(struct e1000_hw *hw)  		if (ret_val)  			break; -		udelay(100); +		usleep_range(100, 200);  		ret_val = e1000_retry_write_flash_byte_ich8lan(hw, -							  act_offset + 1, -							  (u8)(data >> 8)); +							       act_offset + 1, +							       (u8)(data >> 8));  		if (ret_val)  			break;  	} @@ -3050,8 +3174,8 @@ static s32 e1000_write_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,  	    offset > ICH_FLASH_LINEAR_ADDR_MASK)  		return -E1000_ERR_NVM; -	flash_linear_addr = (ICH_FLASH_LINEAR_ADDR_MASK & offset) + -			    hw->nvm.flash_base_addr; +	flash_linear_addr = ((ICH_FLASH_LINEAR_ADDR_MASK & offset) + +			     hw->nvm.flash_base_addr);  	do {  		udelay(1); @@ -3062,7 +3186,7 @@ static s32 e1000_write_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,  		hsflctl.regval = er16flash(ICH_FLASH_HSFCTL);  		/* 0b/1b corresponds to 1 or 2 byte size, respectively. */ -		hsflctl.hsf_ctrl.fldbcount = size -1; +		hsflctl.hsf_ctrl.fldbcount = size - 1;  		hsflctl.hsf_ctrl.flcycle = ICH_CYCLE_WRITE;  		ew16flash(ICH_FLASH_HSFCTL, hsflctl.regval); @@ -3078,8 +3202,9 @@ static s32 e1000_write_flash_data_ich8lan(struct e1000_hw *hw, u32 offset,  		/* check if FCERR is set to 1 , if set to 1, clear it  		 * and try the whole sequence a few more times else done  		 */ -		ret_val = e1000_flash_cycle_ich8lan(hw, -					       ICH_FLASH_WRITE_COMMAND_TIMEOUT); +		ret_val = +		    e1000_flash_cycle_ich8lan(hw, +					      ICH_FLASH_WRITE_COMMAND_TIMEOUT);  		if (!ret_val)  			break; @@ -3138,7 +3263,7 @@ static s32 e1000_retry_write_flash_byte_ich8lan(struct e1000_hw *hw,  	for (program_retries = 0; program_retries < 100; program_retries++) {  		e_dbg("Retrying Byte %2.2X at offset %u\n", byte, offset); -		udelay(100); +		usleep_range(100, 200);  		ret_val = e1000_write_flash_byte_ich8lan(hw, offset, byte);  		if (!ret_val)  			break; @@ -3209,8 +3334,10 @@ static s32 e1000_erase_flash_bank_ich8lan(struct e1000_hw *hw, u32 bank)  	flash_linear_addr = hw->nvm.flash_base_addr;  	flash_linear_addr += (bank) ? flash_bank_size : 0; -	for (j = 0; j < iteration ; j++) { +	for (j = 0; j < iteration; j++) {  		do { +			u32 timeout = ICH_FLASH_ERASE_COMMAND_TIMEOUT; +  			/* Steps */  			ret_val = e1000_flash_cycle_init_ich8lan(hw);  			if (ret_val) @@ -3230,8 +3357,7 @@ static s32 e1000_erase_flash_bank_ich8lan(struct e1000_hw *hw, u32 bank)  			flash_linear_addr += (j * sector_size);  			ew32flash(ICH_FLASH_FADDR, flash_linear_addr); -			ret_val = e1000_flash_cycle_ich8lan(hw, -					       ICH_FLASH_ERASE_COMMAND_TIMEOUT); +			ret_val = e1000_flash_cycle_ich8lan(hw, timeout);  			if (!ret_val)  				break; @@ -3270,8 +3396,7 @@ static s32 e1000_valid_led_default_ich8lan(struct e1000_hw *hw, u16 *data)  		return ret_val;  	} -	if (*data == ID_LED_RESERVED_0000 || -	    *data == ID_LED_RESERVED_FFFF) +	if (*data == ID_LED_RESERVED_0000 || *data == ID_LED_RESERVED_FFFF)  		*data = ID_LED_DEFAULT_ICH8LAN;  	return 0; @@ -3511,9 +3636,9 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw)  	/* Initialize identification LED */  	ret_val = mac->ops.id_led_init(hw); +	/* An error is not fatal and we should not stop init due to this */  	if (ret_val)  		e_dbg("Error initializing identification LED\n"); -		/* This is not fatal and we should not stop init due to this */  	/* Setup the receive address. */  	e1000e_init_rx_addrs(hw, mac->rar_entry_count); @@ -3541,16 +3666,16 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw)  	/* Set the transmit descriptor write-back policy for both queues */  	txdctl = er32(TXDCTL(0)); -	txdctl = (txdctl & ~E1000_TXDCTL_WTHRESH) | -		 E1000_TXDCTL_FULL_TX_DESC_WB; -	txdctl = (txdctl & ~E1000_TXDCTL_PTHRESH) | -		 E1000_TXDCTL_MAX_TX_DESC_PREFETCH; +	txdctl = ((txdctl & ~E1000_TXDCTL_WTHRESH) | +		  E1000_TXDCTL_FULL_TX_DESC_WB); +	txdctl = ((txdctl & ~E1000_TXDCTL_PTHRESH) | +		  E1000_TXDCTL_MAX_TX_DESC_PREFETCH);  	ew32(TXDCTL(0), txdctl);  	txdctl = er32(TXDCTL(1)); -	txdctl = (txdctl & ~E1000_TXDCTL_WTHRESH) | -		 E1000_TXDCTL_FULL_TX_DESC_WB; -	txdctl = (txdctl & ~E1000_TXDCTL_PTHRESH) | -		 E1000_TXDCTL_MAX_TX_DESC_PREFETCH; +	txdctl = ((txdctl & ~E1000_TXDCTL_WTHRESH) | +		  E1000_TXDCTL_FULL_TX_DESC_WB); +	txdctl = ((txdctl & ~E1000_TXDCTL_PTHRESH) | +		  E1000_TXDCTL_MAX_TX_DESC_PREFETCH);  	ew32(TXDCTL(1), txdctl);  	/* ICH8 has opposite polarity of no_snoop bits. @@ -3559,7 +3684,7 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw)  	if (mac->type == e1000_ich8lan)  		snoop = PCIE_ICH8_SNOOP_ALL;  	else -		snoop = (u32) ~(PCIE_NO_SNOOP_ALL); +		snoop = (u32)~(PCIE_NO_SNOOP_ALL);  	e1000e_set_pcie_no_snoop(hw, snoop);  	ctrl_ext = er32(CTRL_EXT); @@ -3575,6 +3700,7 @@ static s32 e1000_init_hw_ich8lan(struct e1000_hw *hw)  	return ret_val;  } +  /**   *  e1000_initialize_hw_bits_ich8lan - Initialize required hardware bits   *  @hw: pointer to the HW structure @@ -3686,8 +3812,7 @@ static s32 e1000_setup_link_ich8lan(struct e1000_hw *hw)  	 */  	hw->fc.current_mode = hw->fc.requested_mode; -	e_dbg("After fix-ups FlowControl is now = %x\n", -		hw->fc.current_mode); +	e_dbg("After fix-ups FlowControl is now = %x\n", hw->fc.current_mode);  	/* Continue to configure the copper link. */  	ret_val = hw->mac.ops.setup_physical_interface(hw); @@ -3737,12 +3862,12 @@ static s32 e1000_setup_copper_link_ich8lan(struct e1000_hw *hw)  	if (ret_val)  		return ret_val;  	ret_val = e1000e_read_kmrn_reg(hw, E1000_KMRNCTRLSTA_INBAND_PARAM, -	                               ®_data); +				       ®_data);  	if (ret_val)  		return ret_val;  	reg_data |= 0x3F;  	ret_val = e1000e_write_kmrn_reg(hw, E1000_KMRNCTRLSTA_INBAND_PARAM, -	                                reg_data); +					reg_data);  	if (ret_val)  		return ret_val; @@ -3760,7 +3885,6 @@ static s32 e1000_setup_copper_link_ich8lan(struct e1000_hw *hw)  		break;  	case e1000_phy_82577:  	case e1000_phy_82579: -	case e1000_phy_i217:  		ret_val = e1000_copper_link_setup_82577(hw);  		if (ret_val)  			return ret_val; @@ -3796,6 +3920,31 @@ static s32 e1000_setup_copper_link_ich8lan(struct e1000_hw *hw)  }  /** + *  e1000_setup_copper_link_pch_lpt - Configure MAC/PHY interface + *  @hw: pointer to the HW structure + * + *  Calls the PHY specific link setup function and then calls the + *  generic setup_copper_link to finish configuring the link for + *  Lynxpoint PCH devices + **/ +static s32 e1000_setup_copper_link_pch_lpt(struct e1000_hw *hw) +{ +	u32 ctrl; +	s32 ret_val; + +	ctrl = er32(CTRL); +	ctrl |= E1000_CTRL_SLU; +	ctrl &= ~(E1000_CTRL_FRCSPD | E1000_CTRL_FRCDPX); +	ew32(CTRL, ctrl); + +	ret_val = e1000_copper_link_setup_82577(hw); +	if (ret_val) +		return ret_val; + +	return e1000e_setup_copper_link(hw); +} + +/**   *  e1000_get_link_up_info_ich8lan - Get current link speed and duplex   *  @hw: pointer to the HW structure   *  @speed: pointer to store current link speed @@ -3815,8 +3964,7 @@ static s32 e1000_get_link_up_info_ich8lan(struct e1000_hw *hw, u16 *speed,  		return ret_val;  	if ((hw->mac.type == e1000_ich8lan) && -	    (hw->phy.type == e1000_phy_igp_3) && -	    (*speed == SPEED_1000)) { +	    (hw->phy.type == e1000_phy_igp_3) && (*speed == SPEED_1000)) {  		ret_val = e1000_kmrn_lock_loss_workaround_ich8lan(hw);  	} @@ -3899,7 +4047,7 @@ static s32 e1000_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw)   *  /disabled - false).   **/  void e1000e_set_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw, -						 bool state) +						  bool state)  {  	struct e1000_dev_spec_ich8lan *dev_spec = &hw->dev_spec.ich8lan; @@ -3981,12 +4129,12 @@ void e1000e_gig_downshift_workaround_ich8lan(struct e1000_hw *hw)  		return;  	ret_val = e1000e_read_kmrn_reg(hw, E1000_KMRNCTRLSTA_DIAG_OFFSET, -				      ®_data); +				       ®_data);  	if (ret_val)  		return;  	reg_data |= E1000_KMRNCTRLSTA_DIAG_NELPBK;  	ret_val = e1000e_write_kmrn_reg(hw, E1000_KMRNCTRLSTA_DIAG_OFFSET, -				       reg_data); +					reg_data);  	if (ret_val)  		return;  	reg_data &= ~E1000_KMRNCTRLSTA_DIAG_NELPBK; diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.h b/drivers/net/ethernet/intel/e1000e/ich8lan.h index 8bf4655c2e1..80034a2b297 100644 --- a/drivers/net/ethernet/intel/e1000e/ich8lan.h +++ b/drivers/net/ethernet/intel/e1000e/ich8lan.h @@ -211,7 +211,8 @@  #define I82579_MSE_THRESHOLD	0x084F	/* 82579 Mean Square Error Threshold */  #define I82577_MSE_THRESHOLD	0x0887	/* 82577 Mean Square Error Threshold */  #define I82579_MSE_LINK_DOWN	0x2411	/* MSE count before dropping link */ -#define I82579_EEE_PCS_STATUS		0x182D	/* IEEE MMD Register 3.1 >> 8 */ +#define I82579_RX_CONFIG		0x3412	/* Receive configuration */ +#define I82579_EEE_PCS_STATUS		0x182E	/* IEEE MMD Register 3.1 >> 8 */  #define I82579_EEE_CAPABILITY		0x0410	/* IEEE MMD Register 3.20 */  #define I82579_EEE_ADVERTISEMENT	0x040E	/* IEEE MMD Register 7.60 */  #define I82579_EEE_LP_ABILITY		0x040F	/* IEEE MMD Register 7.61 */ @@ -249,13 +250,6 @@  /* Proprietary Latency Tolerance Reporting PCI Capability */  #define E1000_PCI_LTR_CAP_LPT		0xA8 -/* OBFF Control & Threshold Defines */ -#define E1000_SVCR_OFF_EN		0x00000001 -#define E1000_SVCR_OFF_MASKINT		0x00001000 -#define E1000_SVCR_OFF_TIMER_MASK	0xFFFF0000 -#define E1000_SVCR_OFF_TIMER_SHIFT	16 -#define E1000_SVT_OFF_HWM_MASK		0x0000001F -  void e1000e_write_protect_nvm_ich8lan(struct e1000_hw *hw);  void e1000e_set_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw,  						  bool state); @@ -267,4 +261,5 @@ s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable);  void e1000_copy_rx_addrs_to_phy_ich8lan(struct e1000_hw *hw);  s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable);  s32 e1000_read_emi_reg_locked(struct e1000_hw *hw, u16 addr, u16 *data); +s32 e1000_write_emi_reg_locked(struct e1000_hw *hw, u16 addr, u16 data);  #endif /* _E1000E_ICH8LAN_H_ */ diff --git a/drivers/net/ethernet/intel/e1000e/mac.c b/drivers/net/ethernet/intel/e1000e/mac.c index b78e0217460..2480c109187 100644 --- a/drivers/net/ethernet/intel/e1000e/mac.c +++ b/drivers/net/ethernet/intel/e1000e/mac.c @@ -596,7 +596,7 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw)  		 * serdes media type.  		 */  		/* SYNCH bit and IV bit are sticky. */ -		udelay(10); +		usleep_range(10, 20);  		rxcw = er32(RXCW);  		if (rxcw & E1000_RXCW_SYNCH) {  			if (!(rxcw & E1000_RXCW_IV)) { @@ -613,7 +613,7 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw)  		status = er32(STATUS);  		if (status & E1000_STATUS_LU) {  			/* SYNCH bit and IV bit are sticky, so reread rxcw. */ -			udelay(10); +			usleep_range(10, 20);  			rxcw = er32(RXCW);  			if (rxcw & E1000_RXCW_SYNCH) {  				if (!(rxcw & E1000_RXCW_IV)) { @@ -1382,7 +1382,7 @@ s32 e1000e_get_hw_semaphore(struct e1000_hw *hw)  		if (!(swsm & E1000_SWSM_SMBI))  			break; -		udelay(50); +		usleep_range(50, 100);  		i++;  	} @@ -1400,7 +1400,7 @@ s32 e1000e_get_hw_semaphore(struct e1000_hw *hw)  		if (er32(SWSM) & E1000_SWSM_SWESMBI)  			break; -		udelay(50); +		usleep_range(50, 100);  	}  	if (i == timeout) { @@ -1600,15 +1600,28 @@ s32 e1000e_blink_led_generic(struct e1000_hw *hw)  		ledctl_blink = E1000_LEDCTL_LED0_BLINK |  		    (E1000_LEDCTL_MODE_LED_ON << E1000_LEDCTL_LED0_MODE_SHIFT);  	} else { -		/* set the blink bit for each LED that's "on" (0x0E) -		 * in ledctl_mode2 +		/* Set the blink bit for each LED that's "on" (0x0E) +		 * (or "off" if inverted) in ledctl_mode2.  The blink +		 * logic in hardware only works when mode is set to "on" +		 * so it must be changed accordingly when the mode is +		 * "off" and inverted.  		 */  		ledctl_blink = hw->mac.ledctl_mode2; -		for (i = 0; i < 4; i++) -			if (((hw->mac.ledctl_mode2 >> (i * 8)) & 0xFF) == -			    E1000_LEDCTL_MODE_LED_ON) -				ledctl_blink |= (E1000_LEDCTL_LED0_BLINK << -						 (i * 8)); +		for (i = 0; i < 32; i += 8) { +			u32 mode = (hw->mac.ledctl_mode2 >> i) & +			    E1000_LEDCTL_LED0_MODE_MASK; +			u32 led_default = hw->mac.ledctl_default >> i; + +			if ((!(led_default & E1000_LEDCTL_LED0_IVRT) && +			     (mode == E1000_LEDCTL_MODE_LED_ON)) || +			    ((led_default & E1000_LEDCTL_LED0_IVRT) && +			     (mode == E1000_LEDCTL_MODE_LED_OFF))) { +				ledctl_blink &= +				    ~(E1000_LEDCTL_LED0_MODE_MASK << i); +				ledctl_blink |= (E1000_LEDCTL_LED0_BLINK | +						 E1000_LEDCTL_MODE_LED_ON) << i; +			} +		}  	}  	ew32(LEDCTL, ledctl_blink); @@ -1712,7 +1725,7 @@ s32 e1000e_disable_pcie_master(struct e1000_hw *hw)  	while (timeout) {  		if (!(er32(STATUS) & E1000_STATUS_GIO_MASTER_ENABLE))  			break; -		udelay(100); +		usleep_range(100, 200);  		timeout--;  	} diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c index 7e615e2bf7e..b18fad5b579 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c @@ -55,7 +55,7 @@  #define DRV_EXTRAVERSION "-k" -#define DRV_VERSION "2.2.14" DRV_EXTRAVERSION +#define DRV_VERSION "2.3.2" DRV_EXTRAVERSION  char e1000e_driver_name[] = "e1000e";  const char e1000e_driver_version[] = DRV_VERSION; @@ -219,9 +219,8 @@ static void e1000e_dump(struct e1000_adapter *adapter)  	if (netdev) {  		dev_info(&adapter->pdev->dev, "Net device Info\n");  		pr_info("Device Name     state            trans_start      last_rx\n"); -		pr_info("%-15s %016lX %016lX %016lX\n", -			netdev->name, netdev->state, netdev->trans_start, -			netdev->last_rx); +		pr_info("%-15s %016lX %016lX %016lX\n", netdev->name, +			netdev->state, netdev->trans_start, netdev->last_rx);  	}  	/* Print Registers */ @@ -755,8 +754,7 @@ static void e1000_alloc_rx_buffers_ps(struct e1000_ring *rx_ring,  			    cpu_to_le64(ps_page->dma);  		} -		skb = __netdev_alloc_skb_ip_align(netdev, -						  adapter->rx_ps_bsize0, +		skb = __netdev_alloc_skb_ip_align(netdev, adapter->rx_ps_bsize0,  						  gfp);  		if (!skb) { @@ -850,8 +848,8 @@ check_page:  		if (!buffer_info->dma) {  			buffer_info->dma = dma_map_page(&pdev->dev, -			                                buffer_info->page, 0, -			                                PAGE_SIZE, +							buffer_info->page, 0, +							PAGE_SIZE,  							DMA_FROM_DEVICE);  			if (dma_mapping_error(&pdev->dev, buffer_info->dma)) {  				adapter->alloc_rx_buff_failed++; @@ -942,10 +940,8 @@ static bool e1000_clean_rx_irq(struct e1000_ring *rx_ring, int *work_done,  		cleaned = true;  		cleaned_count++; -		dma_unmap_single(&pdev->dev, -				 buffer_info->dma, -				 adapter->rx_buffer_len, -				 DMA_FROM_DEVICE); +		dma_unmap_single(&pdev->dev, buffer_info->dma, +				 adapter->rx_buffer_len, DMA_FROM_DEVICE);  		buffer_info->dma = 0;  		length = le16_to_cpu(rx_desc->wb.upper.length); @@ -1073,8 +1069,8 @@ static void e1000_put_txbuf(struct e1000_ring *tx_ring,  static void e1000_print_hw_hang(struct work_struct *work)  {  	struct e1000_adapter *adapter = container_of(work, -	                                             struct e1000_adapter, -	                                             print_hang_task); +						     struct e1000_adapter, +						     print_hang_task);  	struct net_device *netdev = adapter->netdev;  	struct e1000_ring *tx_ring = adapter->tx_ring;  	unsigned int i = tx_ring->next_to_clean; @@ -1087,8 +1083,7 @@ static void e1000_print_hw_hang(struct work_struct *work)  	if (test_bit(__E1000_DOWN, &adapter->state))  		return; -	if (!adapter->tx_hang_recheck && -	    (adapter->flags2 & FLAG2_DMA_BURST)) { +	if (!adapter->tx_hang_recheck && (adapter->flags2 & FLAG2_DMA_BURST)) {  		/* May be block on write-back, flush and detect again  		 * flush pending descriptor writebacks to memory  		 */ @@ -1130,19 +1125,10 @@ static void e1000_print_hw_hang(struct work_struct *work)  	      "PHY 1000BASE-T Status  <%x>\n"  	      "PHY Extended Status    <%x>\n"  	      "PCI Status             <%x>\n", -	      readl(tx_ring->head), -	      readl(tx_ring->tail), -	      tx_ring->next_to_use, -	      tx_ring->next_to_clean, -	      tx_ring->buffer_info[eop].time_stamp, -	      eop, -	      jiffies, -	      eop_desc->upper.fields.status, -	      er32(STATUS), -	      phy_status, -	      phy_1000t_status, -	      phy_ext_status, -	      pci_status); +	      readl(tx_ring->head), readl(tx_ring->tail), tx_ring->next_to_use, +	      tx_ring->next_to_clean, tx_ring->buffer_info[eop].time_stamp, +	      eop, jiffies, eop_desc->upper.fields.status, er32(STATUS), +	      phy_status, phy_1000t_status, phy_ext_status, pci_status);  	/* Suggest workaround for known h/w issue */  	if ((hw->mac.type == e1000_pchlan) && (er32(CTRL) & E1000_CTRL_TFCE)) @@ -1435,7 +1421,7 @@ copydone:  		e1000_rx_hash(netdev, rx_desc->wb.lower.hi_dword.rss, skb);  		if (rx_desc->wb.upper.header_status & -			   cpu_to_le16(E1000_RXDPS_HDRSTAT_HDRSP)) +		    cpu_to_le16(E1000_RXDPS_HDRSTAT_HDRSP))  			adapter->rx_hdr_split++;  		e1000_receive_skb(adapter, netdev, skb, staterr, @@ -1473,7 +1459,7 @@ next_desc:   * e1000_consume_page - helper function   **/  static void e1000_consume_page(struct e1000_buffer *bi, struct sk_buff *skb, -                               u16 length) +			       u16 length)  {  	bi->page = NULL;  	skb->len += length; @@ -1500,7 +1486,8 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_ring *rx_ring, int *work_done,  	unsigned int i;  	int cleaned_count = 0;  	bool cleaned = false; -	unsigned int total_rx_bytes=0, total_rx_packets=0; +	unsigned int total_rx_bytes = 0, total_rx_packets = 0; +	struct skb_shared_info *shinfo;  	i = rx_ring->next_to_clean;  	rx_desc = E1000_RX_DESC_EXT(*rx_ring, i); @@ -1546,7 +1533,6 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_ring *rx_ring, int *work_done,  			rx_ring->rx_skb_top = NULL;  			goto next_desc;  		} -  #define rxtop (rx_ring->rx_skb_top)  		if (!(staterr & E1000_RXD_STAT_EOP)) {  			/* this descriptor is only the beginning (or middle) */ @@ -1554,12 +1540,13 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_ring *rx_ring, int *work_done,  				/* this is the beginning of a chain */  				rxtop = skb;  				skb_fill_page_desc(rxtop, 0, buffer_info->page, -				                   0, length); +						   0, length);  			} else {  				/* this is the middle of a chain */ -				skb_fill_page_desc(rxtop, -				    skb_shinfo(rxtop)->nr_frags, -				    buffer_info->page, 0, length); +				shinfo = skb_shinfo(rxtop); +				skb_fill_page_desc(rxtop, shinfo->nr_frags, +						   buffer_info->page, 0, +						   length);  				/* re-use the skb, only consumed the page */  				buffer_info->skb = skb;  			} @@ -1568,9 +1555,10 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_ring *rx_ring, int *work_done,  		} else {  			if (rxtop) {  				/* end of the chain */ -				skb_fill_page_desc(rxtop, -				    skb_shinfo(rxtop)->nr_frags, -				    buffer_info->page, 0, length); +				shinfo = skb_shinfo(rxtop); +				skb_fill_page_desc(rxtop, shinfo->nr_frags, +						   buffer_info->page, 0, +						   length);  				/* re-use the current skb, we only consumed the  				 * page  				 */ @@ -1595,10 +1583,10 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_ring *rx_ring, int *work_done,  					skb_put(skb, length);  				} else {  					skb_fill_page_desc(skb, 0, -					                   buffer_info->page, 0, -				                           length); +							   buffer_info->page, 0, +							   length);  					e1000_consume_page(buffer_info, skb, -					                   length); +							   length);  				}  			}  		} @@ -1671,8 +1659,7 @@ static void e1000_clean_rx_ring(struct e1000_ring *rx_ring)  						 DMA_FROM_DEVICE);  			else if (adapter->clean_rx == e1000_clean_jumbo_rx_irq)  				dma_unmap_page(&pdev->dev, buffer_info->dma, -				               PAGE_SIZE, -					       DMA_FROM_DEVICE); +					       PAGE_SIZE, DMA_FROM_DEVICE);  			else if (adapter->clean_rx == e1000_clean_rx_irq_ps)  				dma_unmap_single(&pdev->dev, buffer_info->dma,  						 adapter->rx_ps_bsize0, @@ -1725,7 +1712,8 @@ static void e1000_clean_rx_ring(struct e1000_ring *rx_ring)  static void e1000e_downshift_workaround(struct work_struct *work)  {  	struct e1000_adapter *adapter = container_of(work, -					struct e1000_adapter, downshift_task); +						     struct e1000_adapter, +						     downshift_task);  	if (test_bit(__E1000_DOWN, &adapter->state))  		return; @@ -1918,7 +1906,6 @@ static irqreturn_t e1000_intr_msix_tx(int __always_unused irq, void *data)  	struct e1000_hw *hw = &adapter->hw;  	struct e1000_ring *tx_ring = adapter->tx_ring; -  	adapter->total_tx_bytes = 0;  	adapter->total_tx_packets = 0; @@ -1975,7 +1962,6 @@ static void e1000_configure_msix(struct e1000_adapter *adapter)  		ew32(RFCTL, rfctl);  	} -#define E1000_IVAR_INT_ALLOC_VALID	0x8  	/* Configure Rx vector */  	rx_ring->ims_val = E1000_IMS_RXQ0;  	adapter->eiac_mask |= rx_ring->ims_val; @@ -2050,8 +2036,9 @@ void e1000e_set_interrupt_capability(struct e1000_adapter *adapter)  		if (adapter->flags & FLAG_HAS_MSIX) {  			adapter->num_vectors = 3; /* RxQ0, TxQ0 and other */  			adapter->msix_entries = kcalloc(adapter->num_vectors, -						      sizeof(struct msix_entry), -						      GFP_KERNEL); +							sizeof(struct +							       msix_entry), +							GFP_KERNEL);  			if (adapter->msix_entries) {  				for (i = 0; i < adapter->num_vectors; i++)  					adapter->msix_entries[i].entry = i; @@ -2495,7 +2482,7 @@ static unsigned int e1000_update_itr(u16 itr_setting, int packets, int bytes)  	switch (itr_setting) {  	case lowest_latency:  		/* handle TSO and jumbo frames */ -		if (bytes/packets > 8000) +		if (bytes / packets > 8000)  			retval = bulk_latency;  		else if ((packets < 5) && (bytes > 512))  			retval = low_latency; @@ -2503,13 +2490,13 @@ static unsigned int e1000_update_itr(u16 itr_setting, int packets, int bytes)  	case low_latency:  /* 50 usec aka 20000 ints/s */  		if (bytes > 10000) {  			/* this if handles the TSO accounting */ -			if (bytes/packets > 8000) +			if (bytes / packets > 8000)  				retval = bulk_latency; -			else if ((packets < 10) || ((bytes/packets) > 1200)) +			else if ((packets < 10) || ((bytes / packets) > 1200))  				retval = bulk_latency;  			else if ((packets > 35))  				retval = lowest_latency; -		} else if (bytes/packets > 2000) { +		} else if (bytes / packets > 2000) {  			retval = bulk_latency;  		} else if (packets <= 2 && bytes < 512) {  			retval = lowest_latency; @@ -2561,8 +2548,8 @@ static void e1000_set_itr(struct e1000_adapter *adapter)  	current_itr = max(adapter->rx_itr, adapter->tx_itr); -	switch (current_itr) {  	/* counts and packets in update_itr are dependent on these numbers */ +	switch (current_itr) {  	case lowest_latency:  		new_itr = 70000;  		break; @@ -2583,8 +2570,7 @@ set_itr_now:  		 * increasing  		 */  		new_itr = new_itr > adapter->itr ? -			     min(adapter->itr + (new_itr >> 2), new_itr) : -			     new_itr; +		    min(adapter->itr + (new_itr >> 2), new_itr) : new_itr;  		adapter->itr = new_itr;  		adapter->rx_ring->itr_val = new_itr;  		if (adapter->msix_entries) @@ -2815,8 +2801,7 @@ static void e1000_update_mng_vlan(struct e1000_adapter *adapter)  	u16 vid = adapter->hw.mng_cookie.vlan_id;  	u16 old_vid = adapter->mng_vlan_id; -	if (adapter->hw.mng_cookie.status & -	    E1000_MNG_DHCP_COOKIE_STATUS_VLAN) { +	if (adapter->hw.mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN) {  		e1000_vlan_rx_add_vid(netdev, vid);  		adapter->mng_vlan_id = vid;  	} @@ -2832,7 +2817,7 @@ static void e1000_restore_vlan(struct e1000_adapter *adapter)  	e1000_vlan_rx_add_vid(adapter->netdev, 0);  	for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) -		e1000_vlan_rx_add_vid(adapter->netdev, vid); +	    e1000_vlan_rx_add_vid(adapter->netdev, vid);  }  static void e1000_init_manageability_pt(struct e1000_adapter *adapter) @@ -3007,8 +2992,8 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)  	rctl = er32(RCTL);  	rctl &= ~(3 << E1000_RCTL_MO_SHIFT);  	rctl |= E1000_RCTL_EN | E1000_RCTL_BAM | -		E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF | -		(adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT); +	    E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF | +	    (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT);  	/* Do not Store bad packets */  	rctl &= ~E1000_RCTL_SBP; @@ -3094,19 +3079,17 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)  		/* Enable Packet split descriptors */  		rctl |= E1000_RCTL_DTYP_PS; -		psrctl |= adapter->rx_ps_bsize0 >> -			E1000_PSRCTL_BSIZE0_SHIFT; +		psrctl |= adapter->rx_ps_bsize0 >> E1000_PSRCTL_BSIZE0_SHIFT;  		switch (adapter->rx_ps_pages) {  		case 3: -			psrctl |= PAGE_SIZE << -				E1000_PSRCTL_BSIZE3_SHIFT; +			psrctl |= PAGE_SIZE << E1000_PSRCTL_BSIZE3_SHIFT; +			/* fall-through */  		case 2: -			psrctl |= PAGE_SIZE << -				E1000_PSRCTL_BSIZE2_SHIFT; +			psrctl |= PAGE_SIZE << E1000_PSRCTL_BSIZE2_SHIFT; +			/* fall-through */  		case 1: -			psrctl |= PAGE_SIZE >> -				E1000_PSRCTL_BSIZE1_SHIFT; +			psrctl |= PAGE_SIZE >> E1000_PSRCTL_BSIZE1_SHIFT;  			break;  		} @@ -3280,7 +3263,7 @@ static int e1000e_write_mc_addr_list(struct net_device *netdev)  	/* update_mc_addr_list expects a packed array of only addresses. */  	i = 0;  	netdev_for_each_mc_addr(ha, netdev) -		memcpy(mta_list + (i++ * ETH_ALEN), ha->addr, ETH_ALEN); +	    memcpy(mta_list + (i++ * ETH_ALEN), ha->addr, ETH_ALEN);  	hw->mac.ops.update_mc_addr_list(hw, mta_list, i);  	kfree(mta_list); @@ -3757,8 +3740,7 @@ void e1000e_reset(struct e1000_adapter *adapter)  		 * but don't include ethernet FCS because hardware appends it  		 */  		min_tx_space = (adapter->max_frame_size + -				sizeof(struct e1000_tx_desc) - -				ETH_FCS_LEN) * 2; +				sizeof(struct e1000_tx_desc) - ETH_FCS_LEN) * 2;  		min_tx_space = ALIGN(min_tx_space, 1024);  		min_tx_space >>= 10;  		/* software strips receive CRC, so leave room for it */ @@ -3861,13 +3843,13 @@ void e1000e_reset(struct e1000_adapter *adapter)  		if ((adapter->max_frame_size * 2) > (pba << 10)) {  			if (!(adapter->flags2 & FLAG2_DISABLE_AIM)) {  				dev_info(&adapter->pdev->dev, -					"Interrupt Throttle Rate turned off\n"); +					 "Interrupt Throttle Rate off\n");  				adapter->flags2 |= FLAG2_DISABLE_AIM;  				e1000e_write_itr(adapter, 0);  			}  		} else if (adapter->flags2 & FLAG2_DISABLE_AIM) {  			dev_info(&adapter->pdev->dev, -				 "Interrupt Throttle Rate turned on\n"); +				 "Interrupt Throttle Rate on\n");  			adapter->flags2 &= ~FLAG2_DISABLE_AIM;  			adapter->itr = 20000;  			e1000e_write_itr(adapter, adapter->itr); @@ -3898,6 +3880,38 @@ void e1000e_reset(struct e1000_adapter *adapter)  	/* initialize systim and reset the ns time counter */  	e1000e_config_hwtstamp(adapter); +	/* Set EEE advertisement as appropriate */ +	if (adapter->flags2 & FLAG2_HAS_EEE) { +		s32 ret_val; +		u16 adv_addr; + +		switch (hw->phy.type) { +		case e1000_phy_82579: +			adv_addr = I82579_EEE_ADVERTISEMENT; +			break; +		case e1000_phy_i217: +			adv_addr = I217_EEE_ADVERTISEMENT; +			break; +		default: +			dev_err(&adapter->pdev->dev, +				"Invalid PHY type setting EEE advertisement\n"); +			return; +		} + +		ret_val = hw->phy.ops.acquire(hw); +		if (ret_val) { +			dev_err(&adapter->pdev->dev, +				"EEE advertisement - unable to acquire PHY\n"); +			return; +		} + +		e1000_write_emi_reg_locked(hw, adv_addr, +					   hw->dev_spec.ich8lan.eee_disable ? +					   0 : adapter->eee_advert); + +		hw->phy.ops.release(hw); +	} +  	if (!netif_running(adapter->netdev) &&  	    !test_bit(__E1000_TESTING, &adapter->state)) {  		e1000_power_down_phy(adapter); @@ -4266,8 +4280,7 @@ static int e1000_open(struct net_device *netdev)  	e1000e_power_up_phy(adapter);  	adapter->mng_vlan_id = E1000_MNG_VLAN_NONE; -	if ((adapter->hw.mng_cookie.status & -	     E1000_MNG_DHCP_COOKIE_STATUS_VLAN)) +	if ((adapter->hw.mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN))  		e1000_update_mng_vlan(adapter);  	/* DMA latency requirement to workaround jumbo issue */ @@ -4370,8 +4383,7 @@ static int e1000_close(struct net_device *netdev)  	/* kill manageability vlan ID if supported, but not if a vlan with  	 * the same ID is registered on the host OS (let 8021q kill it)  	 */ -	if (adapter->hw.mng_cookie.status & -	    E1000_MNG_DHCP_COOKIE_STATUS_VLAN) +	if (adapter->hw.mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN)  		e1000_vlan_rx_kill_vid(netdev, adapter->mng_vlan_id);  	/* If AMT is enabled, let the firmware know that the network @@ -4387,6 +4399,7 @@ static int e1000_close(struct net_device *netdev)  	return 0;  } +  /**   * e1000_set_mac - Change the Ethernet Address of the NIC   * @netdev: network interface device structure @@ -4437,7 +4450,8 @@ static int e1000_set_mac(struct net_device *netdev, void *p)  static void e1000e_update_phy_task(struct work_struct *work)  {  	struct e1000_adapter *adapter = container_of(work, -					struct e1000_adapter, update_phy_task); +						     struct e1000_adapter, +						     update_phy_task);  	if (test_bit(__E1000_DOWN, &adapter->state))  		return; @@ -4454,7 +4468,7 @@ static void e1000e_update_phy_task(struct work_struct *work)   **/  static void e1000_update_phy_info(unsigned long data)  { -	struct e1000_adapter *adapter = (struct e1000_adapter *) data; +	struct e1000_adapter *adapter = (struct e1000_adapter *)data;  	if (test_bit(__E1000_DOWN, &adapter->state))  		return; @@ -4621,18 +4635,16 @@ static void e1000e_update_stats(struct e1000_adapter *adapter)  	 * our own version based on RUC and ROC  	 */  	netdev->stats.rx_errors = adapter->stats.rxerrc + -		adapter->stats.crcerrs + adapter->stats.algnerrc + -		adapter->stats.ruc + adapter->stats.roc + -		adapter->stats.cexterr; +	    adapter->stats.crcerrs + adapter->stats.algnerrc + +	    adapter->stats.ruc + adapter->stats.roc + adapter->stats.cexterr;  	netdev->stats.rx_length_errors = adapter->stats.ruc + -					      adapter->stats.roc; +	    adapter->stats.roc;  	netdev->stats.rx_crc_errors = adapter->stats.crcerrs;  	netdev->stats.rx_frame_errors = adapter->stats.algnerrc;  	netdev->stats.rx_missed_errors = adapter->stats.mpc;  	/* Tx Errors */ -	netdev->stats.tx_errors = adapter->stats.ecol + -				       adapter->stats.latecol; +	netdev->stats.tx_errors = adapter->stats.ecol + adapter->stats.latecol;  	netdev->stats.tx_aborted_errors = adapter->stats.ecol;  	netdev->stats.tx_window_errors = adapter->stats.latecol;  	netdev->stats.tx_carrier_errors = adapter->stats.tncrs; @@ -4790,7 +4802,7 @@ static void e1000e_check_82574_phy_workaround(struct e1000_adapter *adapter)   **/  static void e1000_watchdog(unsigned long data)  { -	struct e1000_adapter *adapter = (struct e1000_adapter *) data; +	struct e1000_adapter *adapter = (struct e1000_adapter *)data;  	/* Do the rest outside of interrupt context */  	schedule_work(&adapter->watchdog_task); @@ -4801,7 +4813,8 @@ static void e1000_watchdog(unsigned long data)  static void e1000_watchdog_task(struct work_struct *work)  {  	struct e1000_adapter *adapter = container_of(work, -					struct e1000_adapter, watchdog_task); +						     struct e1000_adapter, +						     watchdog_task);  	struct net_device *netdev = adapter->netdev;  	struct e1000_mac_info *mac = &adapter->hw.mac;  	struct e1000_phy_info *phy = &adapter->hw.phy; @@ -4835,8 +4848,8 @@ static void e1000_watchdog_task(struct work_struct *work)  			/* update snapshot of PHY registers on LSC */  			e1000_phy_read_status(adapter);  			mac->ops.get_link_up_info(&adapter->hw, -						   &adapter->link_speed, -						   &adapter->link_duplex); +						  &adapter->link_speed, +						  &adapter->link_duplex);  			e1000_print_link_info(adapter);  			/* check if SmartSpeed worked */ @@ -4949,7 +4962,7 @@ static void e1000_watchdog_task(struct work_struct *work)  				adapter->flags |= FLAG_RESTART_NOW;  			else  				pm_schedule_suspend(netdev->dev.parent, -							LINK_TIMEOUT); +						    LINK_TIMEOUT);  		}  	} @@ -4984,8 +4997,8 @@ link_up:  		 */  		u32 goc = (adapter->gotc + adapter->gorc) / 10000;  		u32 dif = (adapter->gotc > adapter->gorc ? -			    adapter->gotc - adapter->gorc : -			    adapter->gorc - adapter->gotc) / 10000; +			   adapter->gotc - adapter->gorc : +			   adapter->gorc - adapter->gotc) / 10000;  		u32 itr = goc > 0 ? (dif * 6000 / goc + 2000) : 8000;  		e1000e_write_itr(adapter, itr); @@ -5064,14 +5077,14 @@ static int e1000_tso(struct e1000_ring *tx_ring, struct sk_buff *skb)  		iph->tot_len = 0;  		iph->check = 0;  		tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr, iph->daddr, -		                                         0, IPPROTO_TCP, 0); +							 0, IPPROTO_TCP, 0);  		cmd_length = E1000_TXD_CMD_IP;  		ipcse = skb_transport_offset(skb) - 1;  	} else if (skb_is_gso_v6(skb)) {  		ipv6_hdr(skb)->payload_len = 0;  		tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, -		                                       &ipv6_hdr(skb)->daddr, -		                                       0, IPPROTO_TCP, 0); +						       &ipv6_hdr(skb)->daddr, +						       0, IPPROTO_TCP, 0);  		ipcse = 0;  	}  	ipcss = skb_network_offset(skb); @@ -5080,7 +5093,7 @@ static int e1000_tso(struct e1000_ring *tx_ring, struct sk_buff *skb)  	tucso = (void *)&(tcp_hdr(skb)->check) - (void *)skb->data;  	cmd_length |= (E1000_TXD_CMD_DEXT | E1000_TXD_CMD_TSE | -	               E1000_TXD_CMD_TCP | (skb->len - (hdr_len))); +		       E1000_TXD_CMD_TCP | (skb->len - (hdr_len)));  	i = tx_ring->next_to_use;  	context_desc = E1000_CONTEXT_DESC(*tx_ring, i); @@ -5150,8 +5163,7 @@ static bool e1000_tx_csum(struct e1000_ring *tx_ring, struct sk_buff *skb)  	context_desc->lower_setup.ip_config = 0;  	context_desc->upper_setup.tcp_fields.tucss = css; -	context_desc->upper_setup.tcp_fields.tucso = -				css + skb->csum_offset; +	context_desc->upper_setup.tcp_fields.tucso = css + skb->csum_offset;  	context_desc->upper_setup.tcp_fields.tucse = 0;  	context_desc->tcp_seg_setup.data = 0;  	context_desc->cmd_and_length = cpu_to_le32(cmd_len); @@ -5224,7 +5236,8 @@ static int e1000_tx_map(struct e1000_ring *tx_ring, struct sk_buff *skb,  			buffer_info->time_stamp = jiffies;  			buffer_info->next_to_watch = i;  			buffer_info->dma = skb_frag_dma_map(&pdev->dev, frag, -						offset, size, DMA_TO_DEVICE); +							    offset, size, +							    DMA_TO_DEVICE);  			buffer_info->mapped_as_page = true;  			if (dma_mapping_error(&pdev->dev, buffer_info->dma))  				goto dma_error; @@ -5273,7 +5286,7 @@ static void e1000_tx_queue(struct e1000_ring *tx_ring, int tx_flags, int count)  	if (tx_flags & E1000_TX_FLAGS_TSO) {  		txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D | -			     E1000_TXD_CMD_TSE; +		    E1000_TXD_CMD_TSE;  		txd_upper |= E1000_TXD_POPTS_TXSM << 8;  		if (tx_flags & E1000_TX_FLAGS_IPV4) @@ -5304,8 +5317,8 @@ static void e1000_tx_queue(struct e1000_ring *tx_ring, int tx_flags, int count)  		buffer_info = &tx_ring->buffer_info[i];  		tx_desc = E1000_TX_DESC(*tx_ring, i);  		tx_desc->buffer_addr = cpu_to_le64(buffer_info->dma); -		tx_desc->lower.data = -			cpu_to_le32(txd_lower | buffer_info->length); +		tx_desc->lower.data = cpu_to_le32(txd_lower | +						  buffer_info->length);  		tx_desc->upper.data = cpu_to_le32(txd_upper);  		i++; @@ -5355,11 +5368,11 @@ static int e1000_transfer_dhcp_info(struct e1000_adapter *adapter,  	if (skb->len <= MINIMUM_DHCP_PACKET_SIZE)  		return 0; -	if (((struct ethhdr *) skb->data)->h_proto != htons(ETH_P_IP)) +	if (((struct ethhdr *)skb->data)->h_proto != htons(ETH_P_IP))  		return 0;  	{ -		const struct iphdr *ip = (struct iphdr *)((u8 *)skb->data+14); +		const struct iphdr *ip = (struct iphdr *)((u8 *)skb->data + 14);  		struct udphdr *udp;  		if (ip->protocol != IPPROTO_UDP) @@ -5584,7 +5597,7 @@ static void e1000_reset_task(struct work_struct *work)   * Returns the address of the device statistics structure.   **/  struct rtnl_link_stats64 *e1000e_get_stats64(struct net_device *netdev, -                                             struct rtnl_link_stats64 *stats) +					     struct rtnl_link_stats64 *stats)  {  	struct e1000_adapter *adapter = netdev_priv(netdev); @@ -5605,18 +5618,15 @@ struct rtnl_link_stats64 *e1000e_get_stats64(struct net_device *netdev,  	 * our own version based on RUC and ROC  	 */  	stats->rx_errors = adapter->stats.rxerrc + -		adapter->stats.crcerrs + adapter->stats.algnerrc + -		adapter->stats.ruc + adapter->stats.roc + -		adapter->stats.cexterr; -	stats->rx_length_errors = adapter->stats.ruc + -					      adapter->stats.roc; +	    adapter->stats.crcerrs + adapter->stats.algnerrc + +	    adapter->stats.ruc + adapter->stats.roc + adapter->stats.cexterr; +	stats->rx_length_errors = adapter->stats.ruc + adapter->stats.roc;  	stats->rx_crc_errors = adapter->stats.crcerrs;  	stats->rx_frame_errors = adapter->stats.algnerrc;  	stats->rx_missed_errors = adapter->stats.mpc;  	/* Tx Errors */ -	stats->tx_errors = adapter->stats.ecol + -				       adapter->stats.latecol; +	stats->tx_errors = adapter->stats.ecol + adapter->stats.latecol;  	stats->tx_aborted_errors = adapter->stats.ecol;  	stats->tx_window_errors = adapter->stats.latecol;  	stats->tx_carrier_errors = adapter->stats.tncrs; @@ -5685,9 +5695,9 @@ static int e1000_change_mtu(struct net_device *netdev, int new_mtu)  	/* adjust allocation if LPE protects us, and we aren't using SBP */  	if ((max_frame == ETH_FRAME_LEN + ETH_FCS_LEN) || -	     (max_frame == ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN)) +	    (max_frame == ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN))  		adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN -					 + ETH_FCS_LEN; +		    + ETH_FCS_LEN;  	if (netif_running(netdev))  		e1000e_up(adapter); @@ -5866,7 +5876,7 @@ static int e1000_init_phy_wakeup(struct e1000_adapter *adapter, u32 wufc)  	phy_reg &= ~(BM_RCTL_MO_MASK);  	if (mac_reg & E1000_RCTL_MO_3)  		phy_reg |= (((mac_reg & E1000_RCTL_MO_3) >> E1000_RCTL_MO_SHIFT) -				<< BM_RCTL_MO_SHIFT); +			    << BM_RCTL_MO_SHIFT);  	if (mac_reg & E1000_RCTL_BAM)  		phy_reg |= BM_RCTL_BAM;  	if (mac_reg & E1000_RCTL_PMCF) @@ -5935,10 +5945,6 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)  		}  		ctrl = er32(CTRL); -		/* advertise wake from D3Cold */ -		#define E1000_CTRL_ADVD3WUC 0x00100000 -		/* phy power management enable */ -		#define E1000_CTRL_EN_PHY_PWR_MGMT 0x00200000  		ctrl |= E1000_CTRL_ADVD3WUC;  		if (!(adapter->flags2 & FLAG2_HAS_PHY_WAKEUP))  			ctrl |= E1000_CTRL_EN_PHY_PWR_MGMT; @@ -5982,8 +5988,6 @@ static int __e1000_shutdown(struct pci_dev *pdev, bool runtime)  	 */  	e1000e_release_hw_control(adapter); -	pci_clear_master(pdev); -  	/* The pci-e switch on some quad port adapters will report a  	 * correctable error when the MAC transitions from D0 to D3.  To  	 * prevent this we need to mask off the correctable errors on the @@ -6082,24 +6086,24 @@ static int __e1000_resume(struct pci_dev *pdev)  		e1e_rphy(&adapter->hw, BM_WUS, &phy_data);  		if (phy_data) {  			e_info("PHY Wakeup cause - %s\n", -				phy_data & E1000_WUS_EX ? "Unicast Packet" : -				phy_data & E1000_WUS_MC ? "Multicast Packet" : -				phy_data & E1000_WUS_BC ? "Broadcast Packet" : -				phy_data & E1000_WUS_MAG ? "Magic Packet" : -				phy_data & E1000_WUS_LNKC ? -				"Link Status Change" : "other"); +			       phy_data & E1000_WUS_EX ? "Unicast Packet" : +			       phy_data & E1000_WUS_MC ? "Multicast Packet" : +			       phy_data & E1000_WUS_BC ? "Broadcast Packet" : +			       phy_data & E1000_WUS_MAG ? "Magic Packet" : +			       phy_data & E1000_WUS_LNKC ? +			       "Link Status Change" : "other");  		}  		e1e_wphy(&adapter->hw, BM_WUS, ~0);  	} else {  		u32 wus = er32(WUS);  		if (wus) {  			e_info("MAC Wakeup cause - %s\n", -				wus & E1000_WUS_EX ? "Unicast Packet" : -				wus & E1000_WUS_MC ? "Multicast Packet" : -				wus & E1000_WUS_BC ? "Broadcast Packet" : -				wus & E1000_WUS_MAG ? "Magic Packet" : -				wus & E1000_WUS_LNKC ? "Link Status Change" : -				"other"); +			       wus & E1000_WUS_EX ? "Unicast Packet" : +			       wus & E1000_WUS_MC ? "Multicast Packet" : +			       wus & E1000_WUS_BC ? "Broadcast Packet" : +			       wus & E1000_WUS_MAG ? "Magic Packet" : +			       wus & E1000_WUS_LNKC ? "Link Status Change" : +			       "other");  		}  		ew32(WUS, ~0);  	} @@ -6374,7 +6378,7 @@ static void e1000_print_device_info(struct e1000_adapter *adapter)  	e_info("(PCI Express:2.5GT/s:%s) %pM\n",  	       /* bus width */  	       ((hw->bus.width == e1000_bus_width_pcie_x4) ? "Width x4" : -	        "Width x1"), +		"Width x1"),  	       /* MAC address */  	       netdev->dev_addr);  	e_info("Intel(R) PRO/%s Network Connection\n", @@ -6484,7 +6488,7 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  	resource_size_t flash_start, flash_len;  	static int cards_found;  	u16 aspm_disable_flag = 0; -	int i, err, pci_using_dac; +	int bars, i, err, pci_using_dac;  	u16 eeprom_data = 0;  	u16 eeprom_apme_mask = E1000_EEPROM_APME; @@ -6511,15 +6515,16 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  			err = dma_set_coherent_mask(&pdev->dev,  						    DMA_BIT_MASK(32));  			if (err) { -				dev_err(&pdev->dev, "No usable DMA configuration, aborting\n"); +				dev_err(&pdev->dev, +					"No usable DMA configuration, aborting\n");  				goto err_dma;  			}  		}  	} -	err = pci_request_selected_regions_exclusive(pdev, -					  pci_select_bars(pdev, IORESOURCE_MEM), -					  e1000e_driver_name); +	bars = pci_select_bars(pdev, IORESOURCE_MEM); +	err = pci_request_selected_regions_exclusive(pdev, bars, +						     e1000e_driver_name);  	if (err)  		goto err_pci_reg; @@ -6572,6 +6577,10 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  			goto err_flashmap;  	} +	/* Set default EEE advertisement */ +	if (adapter->flags2 & FLAG2_HAS_EEE) +		adapter->eee_advert = MDIO_EEE_100TX | MDIO_EEE_1000T; +  	/* construct the net_device struct */  	netdev->netdev_ops		= &e1000e_netdev_ops;  	e1000e_set_ethtool_ops(netdev); @@ -6688,11 +6697,11 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  	init_timer(&adapter->watchdog_timer);  	adapter->watchdog_timer.function = e1000_watchdog; -	adapter->watchdog_timer.data = (unsigned long) adapter; +	adapter->watchdog_timer.data = (unsigned long)adapter;  	init_timer(&adapter->phy_info_timer);  	adapter->phy_info_timer.function = e1000_update_phy_info; -	adapter->phy_info_timer.data = (unsigned long) adapter; +	adapter->phy_info_timer.data = (unsigned long)adapter;  	INIT_WORK(&adapter->reset_task, e1000_reset_task);  	INIT_WORK(&adapter->watchdog_task, e1000_watchdog_task); @@ -6800,7 +6809,7 @@ err_ioremap:  	free_netdev(netdev);  err_alloc_etherdev:  	pci_release_selected_regions(pdev, -	                             pci_select_bars(pdev, IORESOURCE_MEM)); +				     pci_select_bars(pdev, IORESOURCE_MEM));  err_pci_reg:  err_dma:  	pci_disable_device(pdev); @@ -6870,7 +6879,7 @@ static void e1000_remove(struct pci_dev *pdev)  	if (adapter->hw.flash_address)  		iounmap(adapter->hw.flash_address);  	pci_release_selected_regions(pdev, -	                             pci_select_bars(pdev, IORESOURCE_MEM)); +				     pci_select_bars(pdev, IORESOURCE_MEM));  	free_netdev(netdev); @@ -6891,7 +6900,8 @@ static DEFINE_PCI_DEVICE_TABLE(e1000_pci_tbl) = {  	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_COPPER), board_82571 },  	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_FIBER), board_82571 },  	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_QUAD_COPPER), board_82571 }, -	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_QUAD_COPPER_LP), board_82571 }, +	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_QUAD_COPPER_LP), +	  board_82571 },  	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_QUAD_FIBER), board_82571 },  	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_SERDES), board_82571 },  	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82571EB_SERDES_DUAL), board_82571 }, @@ -6967,8 +6977,8 @@ MODULE_DEVICE_TABLE(pci, e1000_pci_tbl);  #ifdef CONFIG_PM  static const struct dev_pm_ops e1000_pm_ops = {  	SET_SYSTEM_SLEEP_PM_OPS(e1000_suspend, e1000_resume) -	SET_RUNTIME_PM_OPS(e1000_runtime_suspend, -				e1000_runtime_resume, e1000_idle) +	SET_RUNTIME_PM_OPS(e1000_runtime_suspend, e1000_runtime_resume, +			   e1000_idle)  };  #endif diff --git a/drivers/net/ethernet/intel/e1000e/nvm.c b/drivers/net/ethernet/intel/e1000e/nvm.c index 84fecc26816..44ddc0a0ee0 100644 --- a/drivers/net/ethernet/intel/e1000e/nvm.c +++ b/drivers/net/ethernet/intel/e1000e/nvm.c @@ -630,7 +630,7 @@ void e1000e_reload_nvm_generic(struct e1000_hw *hw)  {  	u32 ctrl_ext; -	udelay(10); +	usleep_range(10, 20);  	ctrl_ext = er32(CTRL_EXT);  	ctrl_ext |= E1000_CTRL_EXT_EE_RST;  	ew32(CTRL_EXT, ctrl_ext); diff --git a/drivers/net/ethernet/intel/e1000e/param.c b/drivers/net/ethernet/intel/e1000e/param.c index 98da75dff93..c16bd75b6ca 100644 --- a/drivers/net/ethernet/intel/e1000e/param.c +++ b/drivers/net/ethernet/intel/e1000e/param.c @@ -45,7 +45,7 @@  unsigned int copybreak = COPYBREAK_DEFAULT;  module_param(copybreak, uint, 0644);  MODULE_PARM_DESC(copybreak, -	"Maximum size of packet that is copied to a new buffer on receive"); +		 "Maximum size of packet that is copied to a new buffer on receive");  /* All parameters are treated the same, as an integer array of values.   * This macro just reduces the need to repeat the same declaration code @@ -143,7 +143,8 @@ E1000_PARAM(KumeranLockLoss, "Enable Kumeran lock loss workaround");   *   * Default Value: 1 (enabled)   */ -E1000_PARAM(WriteProtectNVM, "Write-protect NVM [WARNING: disabling this can lead to corrupted NVM]"); +E1000_PARAM(WriteProtectNVM, +	    "Write-protect NVM [WARNING: disabling this can lead to corrupted NVM]");  /* Enable CRC Stripping   * @@ -160,13 +161,18 @@ struct e1000_option {  	const char *err;  	int def;  	union { -		struct { /* range_option info */ +		/* range_option info */ +		struct {  			int min;  			int max;  		} r; -		struct { /* list_option info */ +		/* list_option info */ +		struct {  			int nr; -			struct e1000_opt_list { int i; char *str; } *p; +			struct e1000_opt_list { +				int i; +				char *str; +			} *p;  		} l;  	} arg;  }; @@ -246,7 +252,8 @@ void e1000e_check_options(struct e1000_adapter *adapter)  			   "Using defaults for all values\n");  	} -	{ /* Transmit Interrupt Delay */ +	/* Transmit Interrupt Delay */ +	{  		static const struct e1000_option opt = {  			.type = range_option,  			.name = "Transmit Interrupt Delay", @@ -265,7 +272,8 @@ void e1000e_check_options(struct e1000_adapter *adapter)  			adapter->tx_int_delay = opt.def;  		}  	} -	{ /* Transmit Absolute Interrupt Delay */ +	/* Transmit Absolute Interrupt Delay */ +	{  		static const struct e1000_option opt = {  			.type = range_option,  			.name = "Transmit Absolute Interrupt Delay", @@ -284,7 +292,8 @@ void e1000e_check_options(struct e1000_adapter *adapter)  			adapter->tx_abs_int_delay = opt.def;  		}  	} -	{ /* Receive Interrupt Delay */ +	/* Receive Interrupt Delay */ +	{  		static struct e1000_option opt = {  			.type = range_option,  			.name = "Receive Interrupt Delay", @@ -303,7 +312,8 @@ void e1000e_check_options(struct e1000_adapter *adapter)  			adapter->rx_int_delay = opt.def;  		}  	} -	{ /* Receive Absolute Interrupt Delay */ +	/* Receive Absolute Interrupt Delay */ +	{  		static const struct e1000_option opt = {  			.type = range_option,  			.name = "Receive Absolute Interrupt Delay", @@ -322,7 +332,8 @@ void e1000e_check_options(struct e1000_adapter *adapter)  			adapter->rx_abs_int_delay = opt.def;  		}  	} -	{ /* Interrupt Throttling Rate */ +	/* Interrupt Throttling Rate */ +	{  		static const struct e1000_option opt = {  			.type = range_option,  			.name = "Interrupt Throttling Rate (ints/sec)", @@ -392,7 +403,8 @@ void e1000e_check_options(struct e1000_adapter *adapter)  			break;  		}  	} -	{ /* Interrupt Mode */ +	/* Interrupt Mode */ +	{  		static struct e1000_option opt = {  			.type = range_option,  			.name = "Interrupt Mode", @@ -435,7 +447,8 @@ void e1000e_check_options(struct e1000_adapter *adapter)  		kfree(opt.err);  #endif  	} -	{ /* Smart Power Down */ +	/* Smart Power Down */ +	{  		static const struct e1000_option opt = {  			.type = enable_option,  			.name = "PHY Smart Power Down", @@ -450,7 +463,8 @@ void e1000e_check_options(struct e1000_adapter *adapter)  				adapter->flags |= FLAG_SMART_POWER_DOWN;  		}  	} -	{ /* CRC Stripping */ +	/* CRC Stripping */ +	{  		static const struct e1000_option opt = {  			.type = enable_option,  			.name = "CRC Stripping", @@ -470,27 +484,28 @@ void e1000e_check_options(struct e1000_adapter *adapter)  			adapter->flags2 |= FLAG2_DFLT_CRC_STRIPPING;  		}  	} -	{ /* Kumeran Lock Loss Workaround */ +	/* Kumeran Lock Loss Workaround */ +	{  		static const struct e1000_option opt = {  			.type = enable_option,  			.name = "Kumeran Lock Loss Workaround",  			.err  = "defaulting to Enabled",  			.def  = OPTION_ENABLED  		}; +		bool enabled = opt.def;  		if (num_KumeranLockLoss > bd) {  			unsigned int kmrn_lock_loss = KumeranLockLoss[bd];  			e1000_validate_option(&kmrn_lock_loss, &opt, adapter); -			if (hw->mac.type == e1000_ich8lan) -				e1000e_set_kmrn_lock_loss_workaround_ich8lan(hw, -								kmrn_lock_loss); -		} else { -			if (hw->mac.type == e1000_ich8lan) -				e1000e_set_kmrn_lock_loss_workaround_ich8lan(hw, -								       opt.def); +			enabled = kmrn_lock_loss;  		} + +		if (hw->mac.type == e1000_ich8lan) +			e1000e_set_kmrn_lock_loss_workaround_ich8lan(hw, +								     enabled);  	} -	{ /* Write-protect NVM */ +	/* Write-protect NVM */ +	{  		static const struct e1000_option opt = {  			.type = enable_option,  			.name = "Write-protect NVM", @@ -500,7 +515,8 @@ void e1000e_check_options(struct e1000_adapter *adapter)  		if (adapter->flags & FLAG_IS_ICH) {  			if (num_WriteProtectNVM > bd) { -				unsigned int write_protect_nvm = WriteProtectNVM[bd]; +				unsigned int write_protect_nvm = +				    WriteProtectNVM[bd];  				e1000_validate_option(&write_protect_nvm, &opt,  						      adapter);  				if (write_protect_nvm) diff --git a/drivers/net/ethernet/intel/e1000e/phy.c b/drivers/net/ethernet/intel/e1000e/phy.c index 0930c136aa3..59c76a6815a 100644 --- a/drivers/net/ethernet/intel/e1000e/phy.c +++ b/drivers/net/ethernet/intel/e1000e/phy.c @@ -37,7 +37,9 @@ static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset,  /* Cable length tables */  static const u16 e1000_m88_cable_length_table[] = { -	0, 50, 80, 110, 140, 140, E1000_CABLE_LENGTH_UNDEFINED }; +	0, 50, 80, 110, 140, 140, E1000_CABLE_LENGTH_UNDEFINED +}; +  #define M88E1000_CABLE_LENGTH_TABLE_SIZE \  		ARRAY_SIZE(e1000_m88_cable_length_table) @@ -49,7 +51,9 @@ static const u16 e1000_igp_2_cable_length_table[] = {  	66, 70, 75, 79, 83, 87, 91, 94, 98, 101, 104, 60, 66, 72, 77, 82,  	87, 92, 96, 100, 104, 108, 111, 114, 117, 119, 121, 83, 89, 95,  	100, 105, 109, 113, 116, 119, 122, 124, 104, 109, 114, 118, 121, -	124}; +	124 +}; +  #define IGP02E1000_CABLE_LENGTH_TABLE_SIZE \  		ARRAY_SIZE(e1000_igp_2_cable_length_table) @@ -67,8 +71,7 @@ s32 e1000e_check_reset_block_generic(struct e1000_hw *hw)  	manc = er32(MANC); -	return (manc & E1000_MANC_BLK_PHY_RST_ON_IDE) ? -	       E1000_BLK_PHY_RESET : 0; +	return (manc & E1000_MANC_BLK_PHY_RST_ON_IDE) ? E1000_BLK_PHY_RESET : 0;  }  /** @@ -94,7 +97,7 @@ s32 e1000e_get_phy_id(struct e1000_hw *hw)  			return ret_val;  		phy->id = (u32)(phy_id << 16); -		udelay(20); +		usleep_range(20, 40);  		ret_val = e1e_rphy(hw, MII_PHYSID2, &phy_id);  		if (ret_val)  			return ret_val; @@ -175,7 +178,13 @@ s32 e1000e_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data)  		e_dbg("MDI Error\n");  		return -E1000_ERR_PHY;  	} -	*data = (u16) mdic; +	if (((mdic & E1000_MDIC_REG_MASK) >> E1000_MDIC_REG_SHIFT) != offset) { +		e_dbg("MDI Read offset error - requested %d, returned %d\n", +		      offset, +		      (mdic & E1000_MDIC_REG_MASK) >> E1000_MDIC_REG_SHIFT); +		return -E1000_ERR_PHY; +	} +	*data = (u16)mdic;  	/* Allow some time after each MDIC transaction to avoid  	 * reading duplicate data in the next MDIC transaction. @@ -233,6 +242,12 @@ s32 e1000e_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data)  		e_dbg("MDI Error\n");  		return -E1000_ERR_PHY;  	} +	if (((mdic & E1000_MDIC_REG_MASK) >> E1000_MDIC_REG_SHIFT) != offset) { +		e_dbg("MDI Write offset error - requested %d, returned %d\n", +		      offset, +		      (mdic & E1000_MDIC_REG_MASK) >> E1000_MDIC_REG_SHIFT); +		return -E1000_ERR_PHY; +	}  	/* Allow some time after each MDIC transaction to avoid  	 * reading duplicate data in the next MDIC transaction. @@ -324,7 +339,7 @@ s32 e1000_set_page_igp(struct e1000_hw *hw, u16 page)   *  semaphores before exiting.   **/  static s32 __e1000e_read_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 *data, -                                    bool locked) +				     bool locked)  {  	s32 ret_val = 0; @@ -391,7 +406,7 @@ s32 e1000e_read_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset, u16 *data)   *  at the offset.  Release any acquired semaphores before exiting.   **/  static s32 __e1000e_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data, -                                     bool locked) +				      bool locked)  {  	s32 ret_val = 0; @@ -410,8 +425,7 @@ static s32 __e1000e_write_phy_reg_igp(struct e1000_hw *hw, u32 offset, u16 data,  						    (u16)offset);  	if (!ret_val)  		ret_val = e1000e_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & -							offset, -						    data); +						    offset, data);  	if (!locked)  		hw->phy.ops.release(hw); @@ -458,7 +472,7 @@ s32 e1000e_write_phy_reg_igp_locked(struct e1000_hw *hw, u32 offset, u16 data)   *  Release any acquired semaphores before exiting.   **/  static s32 __e1000_read_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 *data, -                                 bool locked) +				 bool locked)  {  	u32 kmrnctrlsta; @@ -531,7 +545,7 @@ s32 e1000e_read_kmrn_reg_locked(struct e1000_hw *hw, u32 offset, u16 *data)   *  before exiting.   **/  static s32 __e1000_write_kmrn_reg(struct e1000_hw *hw, u32 offset, u16 data, -                                  bool locked) +				  bool locked)  {  	u32 kmrnctrlsta; @@ -772,8 +786,7 @@ s32 e1000e_copper_link_setup_m88(struct e1000_hw *hw)  		phy_data |= M88E1000_EPSCR_TX_CLK_25; -		if ((phy->revision == 2) && -		    (phy->id == M88E1111_I_PHY_ID)) { +		if ((phy->revision == 2) && (phy->id == M88E1111_I_PHY_ID)) {  			/* 82573L PHY - set the downshift counter to 5x. */  			phy_data &= ~M88EC018_EPSCR_DOWNSHIFT_COUNTER_MASK;  			phy_data |= M88EC018_EPSCR_DOWNSHIFT_COUNTER_5X; @@ -1296,7 +1309,7 @@ s32 e1000e_phy_force_speed_duplex_m88(struct e1000_hw *hw)  		e_dbg("Waiting for forced speed/duplex link on M88 phy.\n");  		ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT, -						     100000, &link); +						      100000, &link);  		if (ret_val)  			return ret_val; @@ -1319,7 +1332,7 @@ s32 e1000e_phy_force_speed_duplex_m88(struct e1000_hw *hw)  		/* Try once more */  		ret_val = e1000e_phy_has_link_generic(hw, PHY_FORCE_LIMIT, -						     100000, &link); +						      100000, &link);  		if (ret_val)  			return ret_val;  	} @@ -1609,9 +1622,9 @@ s32 e1000_check_polarity_m88(struct e1000_hw *hw)  	ret_val = e1e_rphy(hw, M88E1000_PHY_SPEC_STATUS, &data);  	if (!ret_val) -		phy->cable_polarity = (data & M88E1000_PSSR_REV_POLARITY) -				      ? e1000_rev_polarity_reversed -				      : e1000_rev_polarity_normal; +		phy->cable_polarity = ((data & M88E1000_PSSR_REV_POLARITY) +				       ? e1000_rev_polarity_reversed +				       : e1000_rev_polarity_normal);  	return ret_val;  } @@ -1653,9 +1666,9 @@ s32 e1000_check_polarity_igp(struct e1000_hw *hw)  	ret_val = e1e_rphy(hw, offset, &data);  	if (!ret_val) -		phy->cable_polarity = (data & mask) -				      ? e1000_rev_polarity_reversed -				      : e1000_rev_polarity_normal; +		phy->cable_polarity = ((data & mask) +				       ? e1000_rev_polarity_reversed +				       : e1000_rev_polarity_normal);  	return ret_val;  } @@ -1685,9 +1698,9 @@ s32 e1000_check_polarity_ife(struct e1000_hw *hw)  	ret_val = e1e_rphy(hw, offset, &phy_data);  	if (!ret_val) -		phy->cable_polarity = (phy_data & mask) -		                       ? e1000_rev_polarity_reversed -		                       : e1000_rev_polarity_normal; +		phy->cable_polarity = ((phy_data & mask) +				       ? e1000_rev_polarity_reversed +				       : e1000_rev_polarity_normal);  	return ret_val;  } @@ -1733,7 +1746,7 @@ static s32 e1000_wait_autoneg(struct e1000_hw *hw)   *  Polls the PHY status register for link, 'iterations' number of times.   **/  s32 e1000e_phy_has_link_generic(struct e1000_hw *hw, u32 iterations, -			       u32 usec_interval, bool *success) +				u32 usec_interval, bool *success)  {  	s32 ret_val = 0;  	u16 i, phy_status; @@ -1756,7 +1769,7 @@ s32 e1000e_phy_has_link_generic(struct e1000_hw *hw, u32 iterations,  		if (phy_status & BMSR_LSTATUS)  			break;  		if (usec_interval >= 1000) -			mdelay(usec_interval/1000); +			mdelay(usec_interval / 1000);  		else  			udelay(usec_interval);  	} @@ -1791,8 +1804,8 @@ s32 e1000e_get_cable_length_m88(struct e1000_hw *hw)  	if (ret_val)  		return ret_val; -	index = (phy_data & M88E1000_PSSR_CABLE_LENGTH) >> -	        M88E1000_PSSR_CABLE_LENGTH_SHIFT; +	index = ((phy_data & M88E1000_PSSR_CABLE_LENGTH) >> +		 M88E1000_PSSR_CABLE_LENGTH_SHIFT);  	if (index >= M88E1000_CABLE_LENGTH_TABLE_SIZE - 1)  		return -E1000_ERR_PHY; @@ -1824,10 +1837,10 @@ s32 e1000e_get_cable_length_igp_2(struct e1000_hw *hw)  	u16 cur_agc_index, max_agc_index = 0;  	u16 min_agc_index = IGP02E1000_CABLE_LENGTH_TABLE_SIZE - 1;  	static const u16 agc_reg_array[IGP02E1000_PHY_CHANNEL_NUM] = { -	       IGP02E1000_PHY_AGC_A, -	       IGP02E1000_PHY_AGC_B, -	       IGP02E1000_PHY_AGC_C, -	       IGP02E1000_PHY_AGC_D +		IGP02E1000_PHY_AGC_A, +		IGP02E1000_PHY_AGC_B, +		IGP02E1000_PHY_AGC_C, +		IGP02E1000_PHY_AGC_D  	};  	/* Read the AGC registers for all channels */ @@ -1841,8 +1854,8 @@ s32 e1000e_get_cable_length_igp_2(struct e1000_hw *hw)  		 * that can be put into the lookup table to obtain the  		 * approximate cable length.  		 */ -		cur_agc_index = (phy_data >> IGP02E1000_AGC_LENGTH_SHIFT) & -				IGP02E1000_AGC_LENGTH_MASK; +		cur_agc_index = ((phy_data >> IGP02E1000_AGC_LENGTH_SHIFT) & +				 IGP02E1000_AGC_LENGTH_MASK);  		/* Array index bound check. */  		if ((cur_agc_index >= IGP02E1000_CABLE_LENGTH_TABLE_SIZE) || @@ -1865,8 +1878,8 @@ s32 e1000e_get_cable_length_igp_2(struct e1000_hw *hw)  	agc_value /= (IGP02E1000_PHY_CHANNEL_NUM - 2);  	/* Calculate cable length with the error range of +/- 10 meters. */ -	phy->min_cable_length = ((agc_value - IGP02E1000_AGC_RANGE) > 0) ? -				 (agc_value - IGP02E1000_AGC_RANGE) : 0; +	phy->min_cable_length = (((agc_value - IGP02E1000_AGC_RANGE) > 0) ? +				 (agc_value - IGP02E1000_AGC_RANGE) : 0);  	phy->max_cable_length = agc_value + IGP02E1000_AGC_RANGE;  	phy->cable_length = (phy->min_cable_length + phy->max_cable_length) / 2; @@ -2040,9 +2053,9 @@ s32 e1000_get_phy_info_ife(struct e1000_hw *hw)  			return ret_val;  	} else {  		/* Polarity is forced */ -		phy->cable_polarity = (data & IFE_PSC_FORCE_POLARITY) -		                      ? e1000_rev_polarity_reversed -		                      : e1000_rev_polarity_normal; +		phy->cable_polarity = ((data & IFE_PSC_FORCE_POLARITY) +				       ? e1000_rev_polarity_reversed +				       : e1000_rev_polarity_normal);  	}  	ret_val = e1e_rphy(hw, IFE_PHY_MDIX_CONTROL, &data); @@ -2119,7 +2132,7 @@ s32 e1000e_phy_hw_reset_generic(struct e1000_hw *hw)  	ew32(CTRL, ctrl);  	e1e_flush(); -	udelay(150); +	usleep_range(150, 300);  	phy->ops.release(hw); @@ -2375,13 +2388,13 @@ s32 e1000e_write_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 data)  		/* Page is shifted left, PHY expects (page x 32) */  		ret_val = e1000e_write_phy_reg_mdic(hw, page_select, -		                                    (page << page_shift)); +						    (page << page_shift));  		if (ret_val)  			goto release;  	}  	ret_val = e1000e_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset, -	                                    data); +					    data);  release:  	hw->phy.ops.release(hw); @@ -2433,13 +2446,13 @@ s32 e1000e_read_phy_reg_bm(struct e1000_hw *hw, u32 offset, u16 *data)  		/* Page is shifted left, PHY expects (page x 32) */  		ret_val = e1000e_write_phy_reg_mdic(hw, page_select, -		                                    (page << page_shift)); +						    (page << page_shift));  		if (ret_val)  			goto release;  	}  	ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & offset, -	                                   data); +					   data);  release:  	hw->phy.ops.release(hw);  	return ret_val; @@ -2674,7 +2687,7 @@ static s32 e1000_access_phy_wakeup_reg_bm(struct e1000_hw *hw, u32 offset,  	if (read) {  		/* Read the Wakeup register page value using opcode 0x12 */  		ret_val = e1000e_read_phy_reg_mdic(hw, BM_WUC_DATA_OPCODE, -		                                   data); +						   data);  	} else {  		/* Write the Wakeup register page value using opcode 0x12 */  		ret_val = e1000e_write_phy_reg_mdic(hw, BM_WUC_DATA_OPCODE, @@ -2763,7 +2776,7 @@ static s32 __e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data,  	if (page > 0 && page < HV_INTC_FC_PAGE_START) {  		ret_val = e1000_access_phy_debug_regs_hv(hw, offset, -		                                         data, true); +							 data, true);  		goto out;  	} @@ -2786,8 +2799,7 @@ static s32 __e1000_read_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 *data,  	e_dbg("reading PHY page %d (or 0x%x shifted) reg 0x%x\n", page,  	      page << IGP_PAGE_SHIFT, reg); -	ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg, -	                                  data); +	ret_val = e1000e_read_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg, data);  out:  	if (!locked)  		hw->phy.ops.release(hw); @@ -2871,7 +2883,7 @@ static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data,  	if (page > 0 && page < HV_INTC_FC_PAGE_START) {  		ret_val = e1000_access_phy_debug_regs_hv(hw, offset, -		                                         &data, false); +							 &data, false);  		goto out;  	} @@ -2910,7 +2922,7 @@ static s32 __e1000_write_phy_reg_hv(struct e1000_hw *hw, u32 offset, u16 data,  	      page << IGP_PAGE_SHIFT, reg);  	ret_val = e1000e_write_phy_reg_mdic(hw, MAX_PHY_REG_ADDRESS & reg, -	                                  data); +					    data);  out:  	if (!locked) @@ -2988,15 +3000,15 @@ static u32 e1000_get_phy_addr_for_hv_page(u32 page)   *  These accesses done with PHY address 2 and without using pages.   **/  static s32 e1000_access_phy_debug_regs_hv(struct e1000_hw *hw, u32 offset, -                                          u16 *data, bool read) +					  u16 *data, bool read)  {  	s32 ret_val;  	u32 addr_reg;  	u32 data_reg;  	/* This takes care of the difference with desktop vs mobile phy */ -	addr_reg = (hw->phy.type == e1000_phy_82578) ? -	           I82578_ADDR_REG : I82577_ADDR_REG; +	addr_reg = ((hw->phy.type == e1000_phy_82578) ? +		    I82578_ADDR_REG : I82577_ADDR_REG);  	data_reg = addr_reg + 1;  	/* All operations in this function are phy address 2 */ @@ -3050,8 +3062,8 @@ s32 e1000_link_stall_workaround_hv(struct e1000_hw *hw)  	if (ret_val)  		return ret_val; -	data &= BM_CS_STATUS_LINK_UP | BM_CS_STATUS_RESOLVED | -		BM_CS_STATUS_SPEED_MASK; +	data &= (BM_CS_STATUS_LINK_UP | BM_CS_STATUS_RESOLVED | +		 BM_CS_STATUS_SPEED_MASK);  	if (data != (BM_CS_STATUS_LINK_UP | BM_CS_STATUS_RESOLVED |  		     BM_CS_STATUS_SPEED_1000)) @@ -3086,9 +3098,9 @@ s32 e1000_check_polarity_82577(struct e1000_hw *hw)  	ret_val = e1e_rphy(hw, I82577_PHY_STATUS_2, &data);  	if (!ret_val) -		phy->cable_polarity = (data & I82577_PHY_STATUS2_REV_POLARITY) -		                      ? e1000_rev_polarity_reversed -		                      : e1000_rev_polarity_normal; +		phy->cable_polarity = ((data & I82577_PHY_STATUS2_REV_POLARITY) +				       ? e1000_rev_polarity_reversed +				       : e1000_rev_polarity_normal);  	return ret_val;  } @@ -3215,8 +3227,8 @@ s32 e1000_get_cable_length_82577(struct e1000_hw *hw)  	if (ret_val)  		return ret_val; -	length = (phy_data & I82577_DSTATUS_CABLE_LENGTH) >> -	         I82577_DSTATUS_CABLE_LENGTH_SHIFT; +	length = ((phy_data & I82577_DSTATUS_CABLE_LENGTH) >> +		  I82577_DSTATUS_CABLE_LENGTH_SHIFT);  	if (length == E1000_CABLE_LENGTH_UNDEFINED)  		return -E1000_ERR_PHY;  |