diff options
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/mac.c')
| -rw-r--r-- | drivers/net/ethernet/intel/e1000e/mac.c | 135 | 
1 files changed, 45 insertions, 90 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/mac.c b/drivers/net/ethernet/intel/e1000e/mac.c index a1343992848..54d9dafaf12 100644 --- a/drivers/net/ethernet/intel/e1000e/mac.c +++ b/drivers/net/ethernet/intel/e1000e/mac.c @@ -73,8 +73,7 @@ void e1000_set_lan_id_multi_port_pcie(struct e1000_hw *hw)  	struct e1000_bus_info *bus = &hw->bus;  	u32 reg; -	/* -	 * The status register reports the correct function number +	/* The status register reports the correct function number  	 * for the device regardless of function swap state.  	 */  	reg = er32(STATUS); @@ -210,8 +209,7 @@ s32 e1000_check_alt_mac_addr_generic(struct e1000_hw *hw)  		return 0;  	} -	/* -	 * We have a valid alternate MAC address, and we want to treat it the +	/* We have a valid alternate MAC address, and we want to treat it the  	 * same as the normal permanent MAC address stored by the HW into the  	 * RAR. Do this by mapping this address into RAR0.  	 */ @@ -233,8 +231,7 @@ void e1000e_rar_set_generic(struct e1000_hw *hw, u8 *addr, u32 index)  {  	u32 rar_low, rar_high; -	/* -	 * HW expects these in little endian so we reverse the byte order +	/* HW expects these in little endian so we reverse the byte order  	 * from network order (big endian) to little endian  	 */  	rar_low = ((u32)addr[0] | ((u32)addr[1] << 8) | @@ -246,8 +243,7 @@ void e1000e_rar_set_generic(struct e1000_hw *hw, u8 *addr, u32 index)  	if (rar_low || rar_high)  		rar_high |= E1000_RAH_AV; -	/* -	 * Some bridges will combine consecutive 32-bit writes into +	/* Some bridges will combine consecutive 32-bit writes into  	 * a single burst write, which will malfunction on some parts.  	 * The flushes avoid this.  	 */ @@ -273,15 +269,13 @@ static u32 e1000_hash_mc_addr(struct e1000_hw *hw, u8 *mc_addr)  	/* Register count multiplied by bits per register */  	hash_mask = (hw->mac.mta_reg_count * 32) - 1; -	/* -	 * For a mc_filter_type of 0, bit_shift is the number of left-shifts +	/* For a mc_filter_type of 0, bit_shift is the number of left-shifts  	 * where 0xFF would still fall within the hash mask.  	 */  	while (hash_mask >> bit_shift != 0xFF)  		bit_shift++; -	/* -	 * The portion of the address that is used for the hash table +	/* The portion of the address that is used for the hash table  	 * is determined by the mc_filter_type setting.  	 * The algorithm is such that there is a total of 8 bits of shifting.  	 * The bit_shift for a mc_filter_type of 0 represents the number of @@ -423,8 +417,7 @@ s32 e1000e_check_for_copper_link(struct e1000_hw *hw)  	s32 ret_val;  	bool link; -	/* -	 * We only want to go out to the PHY registers to see if Auto-Neg +	/* We only want to go out to the PHY registers to see if Auto-Neg  	 * has completed and/or if our link status has changed.  The  	 * get_link_status flag is set upon receiving a Link Status  	 * Change or Rx Sequence Error interrupt. @@ -432,8 +425,7 @@ s32 e1000e_check_for_copper_link(struct e1000_hw *hw)  	if (!mac->get_link_status)  		return 0; -	/* -	 * First we want to see if the MII Status Register reports +	/* First we want to see if the MII Status Register reports  	 * link.  If so, then we want to get the current speed/duplex  	 * of the PHY.  	 */ @@ -446,28 +438,24 @@ s32 e1000e_check_for_copper_link(struct e1000_hw *hw)  	mac->get_link_status = false; -	/* -	 * Check if there was DownShift, must be checked +	/* Check if there was DownShift, must be checked  	 * immediately after link-up  	 */  	e1000e_check_downshift(hw); -	/* -	 * If we are forcing speed/duplex, then we simply return since +	/* If we are forcing speed/duplex, then we simply return since  	 * we have already determined whether we have link or not.  	 */  	if (!mac->autoneg)  		return -E1000_ERR_CONFIG; -	/* -	 * Auto-Neg is enabled.  Auto Speed Detection takes care +	/* Auto-Neg is enabled.  Auto Speed Detection takes care  	 * of MAC speed/duplex configuration.  So we only need to  	 * configure Collision Distance in the MAC.  	 */  	mac->ops.config_collision_dist(hw); -	/* -	 * Configure Flow Control now that Auto-Neg has completed. +	/* Configure Flow Control now that Auto-Neg has completed.  	 * First, we need to restore the desired flow control  	 * settings because we may have had to re-autoneg with a  	 * different link partner. @@ -498,8 +486,7 @@ s32 e1000e_check_for_fiber_link(struct e1000_hw *hw)  	status = er32(STATUS);  	rxcw = er32(RXCW); -	/* -	 * If we don't have link (auto-negotiation failed or link partner +	/* If we don't have link (auto-negotiation failed or link partner  	 * cannot auto-negotiate), the cable is plugged in (we have signal),  	 * and our link partner is not trying to auto-negotiate with us (we  	 * are receiving idles or data), we need to force link up. We also @@ -530,8 +517,7 @@ s32 e1000e_check_for_fiber_link(struct e1000_hw *hw)  			return ret_val;  		}  	} else if ((ctrl & E1000_CTRL_SLU) && (rxcw & E1000_RXCW_C)) { -		/* -		 * If we are forcing link and we are receiving /C/ ordered +		/* If we are forcing link and we are receiving /C/ ordered  		 * sets, re-enable auto-negotiation in the TXCW register  		 * and disable forced link in the Device Control register  		 * in an attempt to auto-negotiate with our link partner. @@ -565,8 +551,7 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw)  	status = er32(STATUS);  	rxcw = er32(RXCW); -	/* -	 * If we don't have link (auto-negotiation failed or link partner +	/* If we don't have link (auto-negotiation failed or link partner  	 * cannot auto-negotiate), and our link partner is not trying to  	 * auto-negotiate with us (we are receiving idles or data),  	 * we need to force link up. We also need to give auto-negotiation @@ -595,8 +580,7 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw)  			return ret_val;  		}  	} else if ((ctrl & E1000_CTRL_SLU) && (rxcw & E1000_RXCW_C)) { -		/* -		 * If we are forcing link and we are receiving /C/ ordered +		/* If we are forcing link and we are receiving /C/ ordered  		 * sets, re-enable auto-negotiation in the TXCW register  		 * and disable forced link in the Device Control register  		 * in an attempt to auto-negotiate with our link partner. @@ -607,8 +591,7 @@ s32 e1000e_check_for_serdes_link(struct e1000_hw *hw)  		mac->serdes_has_link = true;  	} else if (!(E1000_TXCW_ANE & er32(TXCW))) { -		/* -		 * If we force link for non-auto-negotiation switch, check +		/* If we force link for non-auto-negotiation switch, check  		 * link status based on MAC synchronization for internal  		 * serdes media type.  		 */ @@ -665,8 +648,7 @@ static s32 e1000_set_default_fc_generic(struct e1000_hw *hw)  	s32 ret_val;  	u16 nvm_data; -	/* -	 * Read and store word 0x0F of the EEPROM. This word contains bits +	/* Read and store word 0x0F of the EEPROM. This word contains bits  	 * that determine the hardware's default PAUSE (flow control) mode,  	 * a bit that determines whether the HW defaults to enabling or  	 * disabling auto-negotiation, and the direction of the @@ -705,15 +687,13 @@ s32 e1000e_setup_link_generic(struct e1000_hw *hw)  {  	s32 ret_val; -	/* -	 * In the case of the phy reset being blocked, we already have a link. +	/* In the case of the phy reset being blocked, we already have a link.  	 * We do not need to set it up again.  	 */  	if (hw->phy.ops.check_reset_block && hw->phy.ops.check_reset_block(hw))  		return 0; -	/* -	 * If requested flow control is set to default, set flow control +	/* If requested flow control is set to default, set flow control  	 * based on the EEPROM flow control settings.  	 */  	if (hw->fc.requested_mode == e1000_fc_default) { @@ -722,8 +702,7 @@ s32 e1000e_setup_link_generic(struct e1000_hw *hw)  			return ret_val;  	} -	/* -	 * Save off the requested flow control mode for use later.  Depending +	/* Save off the requested flow control mode for use later.  Depending  	 * on the link partner's capabilities, we may or may not use this mode.  	 */  	hw->fc.current_mode = hw->fc.requested_mode; @@ -735,8 +714,7 @@ s32 e1000e_setup_link_generic(struct e1000_hw *hw)  	if (ret_val)  		return ret_val; -	/* -	 * Initialize the flow control address, type, and PAUSE timer +	/* Initialize the flow control address, type, and PAUSE timer  	 * registers to their default values.  This is done even if flow  	 * control is disabled, because it does not hurt anything to  	 * initialize these registers. @@ -763,8 +741,7 @@ static s32 e1000_commit_fc_settings_generic(struct e1000_hw *hw)  	struct e1000_mac_info *mac = &hw->mac;  	u32 txcw; -	/* -	 * Check for a software override of the flow control settings, and +	/* Check for a software override of the flow control settings, and  	 * setup the device accordingly.  If auto-negotiation is enabled, then  	 * software will have to set the "PAUSE" bits to the correct value in  	 * the Transmit Config Word Register (TXCW) and re-start auto- @@ -786,8 +763,7 @@ static s32 e1000_commit_fc_settings_generic(struct e1000_hw *hw)  		txcw = (E1000_TXCW_ANE | E1000_TXCW_FD);  		break;  	case e1000_fc_rx_pause: -		/* -		 * Rx Flow control is enabled and Tx Flow control is disabled +		/* Rx Flow control is enabled and Tx Flow control is disabled  		 * by a software over-ride. Since there really isn't a way to  		 * advertise that we are capable of Rx Pause ONLY, we will  		 * advertise that we support both symmetric and asymmetric Rx @@ -797,15 +773,13 @@ static s32 e1000_commit_fc_settings_generic(struct e1000_hw *hw)  		txcw = (E1000_TXCW_ANE | E1000_TXCW_FD | E1000_TXCW_PAUSE_MASK);  		break;  	case e1000_fc_tx_pause: -		/* -		 * Tx Flow control is enabled, and Rx Flow control is disabled, +		/* Tx Flow control is enabled, and Rx Flow control is disabled,  		 * by a software over-ride.  		 */  		txcw = (E1000_TXCW_ANE | E1000_TXCW_FD | E1000_TXCW_ASM_DIR);  		break;  	case e1000_fc_full: -		/* -		 * Flow control (both Rx and Tx) is enabled by a software +		/* Flow control (both Rx and Tx) is enabled by a software  		 * over-ride.  		 */  		txcw = (E1000_TXCW_ANE | E1000_TXCW_FD | E1000_TXCW_PAUSE_MASK); @@ -835,8 +809,7 @@ static s32 e1000_poll_fiber_serdes_link_generic(struct e1000_hw *hw)  	u32 i, status;  	s32 ret_val; -	/* -	 * If we have a signal (the cable is plugged in, or assumed true for +	/* If we have a signal (the cable is plugged in, or assumed true for  	 * serdes media) then poll for a "Link-Up" indication in the Device  	 * Status Register.  Time-out if a link isn't seen in 500 milliseconds  	 * seconds (Auto-negotiation should complete in less than 500 @@ -851,8 +824,7 @@ static s32 e1000_poll_fiber_serdes_link_generic(struct e1000_hw *hw)  	if (i == FIBER_LINK_UP_LIMIT) {  		e_dbg("Never got a valid link from auto-neg!!!\n");  		mac->autoneg_failed = true; -		/* -		 * AutoNeg failed to achieve a link, so we'll call +		/* AutoNeg failed to achieve a link, so we'll call  		 * mac->check_for_link. This routine will force the  		 * link up if we detect a signal. This will allow us to  		 * communicate with non-autonegotiating link partners. @@ -894,8 +866,7 @@ s32 e1000e_setup_fiber_serdes_link(struct e1000_hw *hw)  	if (ret_val)  		return ret_val; -	/* -	 * Since auto-negotiation is enabled, take the link out of reset (the +	/* Since auto-negotiation is enabled, take the link out of reset (the  	 * link will be in reset, because we previously reset the chip). This  	 * will restart auto-negotiation.  If auto-negotiation is successful  	 * then the link-up status bit will be set and the flow control enable @@ -907,8 +878,7 @@ s32 e1000e_setup_fiber_serdes_link(struct e1000_hw *hw)  	e1e_flush();  	usleep_range(1000, 2000); -	/* -	 * For these adapters, the SW definable pin 1 is set when the optics +	/* For these adapters, the SW definable pin 1 is set when the optics  	 * detect a signal.  If we have a signal, then poll for a "Link-Up"  	 * indication.  	 */ @@ -954,16 +924,14 @@ s32 e1000e_set_fc_watermarks(struct e1000_hw *hw)  {  	u32 fcrtl = 0, fcrth = 0; -	/* -	 * Set the flow control receive threshold registers.  Normally, +	/* Set the flow control receive threshold registers.  Normally,  	 * these registers will be set to a default threshold that may be  	 * adjusted later by the driver's runtime code.  However, if the  	 * ability to transmit pause frames is not enabled, then these  	 * registers will be set to 0.  	 */  	if (hw->fc.current_mode & e1000_fc_tx_pause) { -		/* -		 * We need to set up the Receive Threshold high and low water +		/* We need to set up the Receive Threshold high and low water  		 * marks as well as (optionally) enabling the transmission of  		 * XON frames.  		 */ @@ -995,8 +963,7 @@ s32 e1000e_force_mac_fc(struct e1000_hw *hw)  	ctrl = er32(CTRL); -	/* -	 * Because we didn't get link via the internal auto-negotiation +	/* Because we didn't get link via the internal auto-negotiation  	 * mechanism (we either forced link or we got link via PHY  	 * auto-neg), we have to manually enable/disable transmit an  	 * receive flow control. @@ -1057,8 +1024,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)  	u16 mii_status_reg, mii_nway_adv_reg, mii_nway_lp_ability_reg;  	u16 speed, duplex; -	/* -	 * Check for the case where we have fiber media and auto-neg failed +	/* Check for the case where we have fiber media and auto-neg failed  	 * so we had to force link.  In this case, we need to force the  	 * configuration of the MAC to match the "fc" parameter.  	 */ @@ -1076,15 +1042,13 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)  		return ret_val;  	} -	/* -	 * Check for the case where we have copper media and auto-neg is +	/* Check for the case where we have copper media and auto-neg is  	 * enabled.  In this case, we need to check and see if Auto-Neg  	 * has completed, and if so, how the PHY and link partner has  	 * flow control configured.  	 */  	if ((hw->phy.media_type == e1000_media_type_copper) && mac->autoneg) { -		/* -		 * Read the MII Status Register and check to see if AutoNeg +		/* Read the MII Status Register and check to see if AutoNeg  		 * has completed.  We read this twice because this reg has  		 * some "sticky" (latched) bits.  		 */ @@ -1100,8 +1064,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)  			return ret_val;  		} -		/* -		 * The AutoNeg process has completed, so we now need to +		/* The AutoNeg process has completed, so we now need to  		 * read both the Auto Negotiation Advertisement  		 * Register (Address 4) and the Auto_Negotiation Base  		 * Page Ability Register (Address 5) to determine how @@ -1115,8 +1078,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)  		if (ret_val)  			return ret_val; -		/* -		 * Two bits in the Auto Negotiation Advertisement Register +		/* Two bits in the Auto Negotiation Advertisement Register  		 * (Address 4) and two bits in the Auto Negotiation Base  		 * Page Ability Register (Address 5) determine flow control  		 * for both the PHY and the link partner.  The following @@ -1151,8 +1113,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)  		 */  		if ((mii_nway_adv_reg & NWAY_AR_PAUSE) &&  		    (mii_nway_lp_ability_reg & NWAY_LPAR_PAUSE)) { -			/* -			 * Now we need to check if the user selected Rx ONLY +			/* Now we need to check if the user selected Rx ONLY  			 * of pause frames.  In this case, we had to advertise  			 * FULL flow control because we could not advertise Rx  			 * ONLY. Hence, we must now check to see if we need to @@ -1166,8 +1127,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)  				e_dbg("Flow Control = Rx PAUSE frames only.\n");  			}  		} -		/* -		 * For receiving PAUSE frames ONLY. +		/* For receiving PAUSE frames ONLY.  		 *  		 *   LOCAL DEVICE  |   LINK PARTNER  		 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result @@ -1181,8 +1141,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)  			hw->fc.current_mode = e1000_fc_tx_pause;  			e_dbg("Flow Control = Tx PAUSE frames only.\n");  		} -		/* -		 * For transmitting PAUSE frames ONLY. +		/* For transmitting PAUSE frames ONLY.  		 *  		 *   LOCAL DEVICE  |   LINK PARTNER  		 * PAUSE | ASM_DIR | PAUSE | ASM_DIR | Result @@ -1196,16 +1155,14 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)  			hw->fc.current_mode = e1000_fc_rx_pause;  			e_dbg("Flow Control = Rx PAUSE frames only.\n");  		} else { -			/* -			 * Per the IEEE spec, at this point flow control +			/* Per the IEEE spec, at this point flow control  			 * should be disabled.  			 */  			hw->fc.current_mode = e1000_fc_none;  			e_dbg("Flow Control = NONE.\n");  		} -		/* -		 * Now we need to do one last check...  If we auto- +		/* Now we need to do one last check...  If we auto-  		 * negotiated to HALF DUPLEX, flow control should not be  		 * enabled per IEEE 802.3 spec.  		 */ @@ -1218,8 +1175,7 @@ s32 e1000e_config_fc_after_link_up(struct e1000_hw *hw)  		if (duplex == HALF_DUPLEX)  			hw->fc.current_mode = e1000_fc_none; -		/* -		 * Now we call a subroutine to actually force the MAC +		/* Now we call a subroutine to actually force the MAC  		 * controller to use the correct flow control settings.  		 */  		ret_val = e1000e_force_mac_fc(hw); @@ -1520,8 +1476,7 @@ 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) +		/* set the blink bit for each LED that's "on" (0x0E)  		 * in ledctl_mode2  		 */  		ledctl_blink = hw->mac.ledctl_mode2;  |