diff options
| author | Sasha Neftin <sasha.neftin@intel.com> | 2019-07-16 15:35:39 +0300 | 
|---|---|---|
| committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2019-09-09 10:08:38 -0700 | 
| commit | 10ce2c00cfdc5c0e682a7e3383e24cb55d21fdac (patch) | |
| tree | c2e63a8c4152b9650e56ca54a4b6ca1f9ccc9a99 /drivers/net/ethernet/intel/igc | |
| parent | dee23594d587386e9fda76732aa5f5a487709510 (diff) | |
igc: Remove useless forward declaration
Move igc_phy_setup_autoneg, igc_wait_autoneg and igc_set_fc_watermarks
up to avoid forward declaration.
It is not necessary to forward declare these static methods.
Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/igc')
| -rw-r--r-- | drivers/net/ethernet/intel/igc/igc_mac.c | 73 | ||||
| -rw-r--r-- | drivers/net/ethernet/intel/igc/igc_phy.c | 192 | 
2 files changed, 129 insertions, 136 deletions
diff --git a/drivers/net/ethernet/intel/igc/igc_mac.c b/drivers/net/ethernet/intel/igc/igc_mac.c index ba4646737288..5eeb4c8caf4a 100644 --- a/drivers/net/ethernet/intel/igc/igc_mac.c +++ b/drivers/net/ethernet/intel/igc/igc_mac.c @@ -7,9 +7,6 @@  #include "igc_mac.h"  #include "igc_hw.h" -/* forward declaration */ -static s32 igc_set_fc_watermarks(struct igc_hw *hw); -  /**   * igc_disable_pcie_master - Disables PCI-express master access   * @hw: pointer to the HW structure @@ -75,6 +72,41 @@ void igc_init_rx_addrs(struct igc_hw *hw, u16 rar_count)  }  /** + * igc_set_fc_watermarks - Set flow control high/low watermarks + * @hw: pointer to the HW structure + * + * Sets the flow control high/low threshold (watermark) registers.  If + * flow control XON frame transmission is enabled, then set XON frame + * transmission as well. + */ +static s32 igc_set_fc_watermarks(struct igc_hw *hw) +{ +	u32 fcrtl = 0, fcrth = 0; + +	/* 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 & igc_fc_tx_pause) { +		/* We need to set up the Receive Threshold high and low water +		 * marks as well as (optionally) enabling the transmission of +		 * XON frames. +		 */ +		fcrtl = hw->fc.low_water; +		if (hw->fc.send_xon) +			fcrtl |= IGC_FCRTL_XONE; + +		fcrth = hw->fc.high_water; +	} +	wr32(IGC_FCRTL, fcrtl); +	wr32(IGC_FCRTH, fcrth); + +	return 0; +} + +/**   * igc_setup_link - Setup flow control and link settings   * @hw: pointer to the HW structure   * @@ -195,41 +227,6 @@ out:  }  /** - * igc_set_fc_watermarks - Set flow control high/low watermarks - * @hw: pointer to the HW structure - * - * Sets the flow control high/low threshold (watermark) registers.  If - * flow control XON frame transmission is enabled, then set XON frame - * transmission as well. - */ -static s32 igc_set_fc_watermarks(struct igc_hw *hw) -{ -	u32 fcrtl = 0, fcrth = 0; - -	/* 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 & igc_fc_tx_pause) { -		/* We need to set up the Receive Threshold high and low water -		 * marks as well as (optionally) enabling the transmission of -		 * XON frames. -		 */ -		fcrtl = hw->fc.low_water; -		if (hw->fc.send_xon) -			fcrtl |= IGC_FCRTL_XONE; - -		fcrth = hw->fc.high_water; -	} -	wr32(IGC_FCRTL, fcrtl); -	wr32(IGC_FCRTH, fcrth); - -	return 0; -} - -/**   * igc_clear_hw_cntrs_base - Clear base hardware counters   * @hw: pointer to the HW structure   * diff --git a/drivers/net/ethernet/intel/igc/igc_phy.c b/drivers/net/ethernet/intel/igc/igc_phy.c index 4c8f96a9a148..f4b05af0dd2f 100644 --- a/drivers/net/ethernet/intel/igc/igc_phy.c +++ b/drivers/net/ethernet/intel/igc/igc_phy.c @@ -3,10 +3,6 @@  #include "igc_phy.h" -/* forward declaration */ -static s32 igc_phy_setup_autoneg(struct igc_hw *hw); -static s32 igc_wait_autoneg(struct igc_hw *hw); -  /**   * igc_check_reset_block - Check if PHY reset is blocked   * @hw: pointer to the HW structure @@ -208,100 +204,6 @@ out:  }  /** - * igc_copper_link_autoneg - Setup/Enable autoneg for copper link - * @hw: pointer to the HW structure - * - * Performs initial bounds checking on autoneg advertisement parameter, then - * configure to advertise the full capability.  Setup the PHY to autoneg - * and restart the negotiation process between the link partner.  If - * autoneg_wait_to_complete, then wait for autoneg to complete before exiting. - */ -static s32 igc_copper_link_autoneg(struct igc_hw *hw) -{ -	struct igc_phy_info *phy = &hw->phy; -	u16 phy_ctrl; -	s32 ret_val; - -	/* Perform some bounds checking on the autoneg advertisement -	 * parameter. -	 */ -	phy->autoneg_advertised &= phy->autoneg_mask; - -	/* If autoneg_advertised is zero, we assume it was not defaulted -	 * by the calling code so we set to advertise full capability. -	 */ -	if (phy->autoneg_advertised == 0) -		phy->autoneg_advertised = phy->autoneg_mask; - -	hw_dbg("Reconfiguring auto-neg advertisement params\n"); -	ret_val = igc_phy_setup_autoneg(hw); -	if (ret_val) { -		hw_dbg("Error Setting up Auto-Negotiation\n"); -		goto out; -	} -	hw_dbg("Restarting Auto-Neg\n"); - -	/* Restart auto-negotiation by setting the Auto Neg Enable bit and -	 * the Auto Neg Restart bit in the PHY control register. -	 */ -	ret_val = phy->ops.read_reg(hw, PHY_CONTROL, &phy_ctrl); -	if (ret_val) -		goto out; - -	phy_ctrl |= (MII_CR_AUTO_NEG_EN | MII_CR_RESTART_AUTO_NEG); -	ret_val = phy->ops.write_reg(hw, PHY_CONTROL, phy_ctrl); -	if (ret_val) -		goto out; - -	/* Does the user want to wait for Auto-Neg to complete here, or -	 * check at a later time (for example, callback routine). -	 */ -	if (phy->autoneg_wait_to_complete) { -		ret_val = igc_wait_autoneg(hw); -		if (ret_val) { -			hw_dbg("Error while waiting for autoneg to complete\n"); -			goto out; -		} -	} - -	hw->mac.get_link_status = true; - -out: -	return ret_val; -} - -/** - * igc_wait_autoneg - Wait for auto-neg completion - * @hw: pointer to the HW structure - * - * Waits for auto-negotiation to complete or for the auto-negotiation time - * limit to expire, which ever happens first. - */ -static s32 igc_wait_autoneg(struct igc_hw *hw) -{ -	u16 i, phy_status; -	s32 ret_val = 0; - -	/* Break after autoneg completes or PHY_AUTO_NEG_LIMIT expires. */ -	for (i = PHY_AUTO_NEG_LIMIT; i > 0; i--) { -		ret_val = hw->phy.ops.read_reg(hw, PHY_STATUS, &phy_status); -		if (ret_val) -			break; -		ret_val = hw->phy.ops.read_reg(hw, PHY_STATUS, &phy_status); -		if (ret_val) -			break; -		if (phy_status & MII_SR_AUTONEG_COMPLETE) -			break; -		msleep(100); -	} - -	/* PHY_AUTO_NEG_TIME expiration doesn't guarantee auto-negotiation -	 * has completed. -	 */ -	return ret_val; -} - -/**   * igc_phy_setup_autoneg - Configure PHY for auto-negotiation   * @hw: pointer to the HW structure   * @@ -486,6 +388,100 @@ static s32 igc_phy_setup_autoneg(struct igc_hw *hw)  }  /** + * igc_wait_autoneg - Wait for auto-neg completion + * @hw: pointer to the HW structure + * + * Waits for auto-negotiation to complete or for the auto-negotiation time + * limit to expire, which ever happens first. + */ +static s32 igc_wait_autoneg(struct igc_hw *hw) +{ +	u16 i, phy_status; +	s32 ret_val = 0; + +	/* Break after autoneg completes or PHY_AUTO_NEG_LIMIT expires. */ +	for (i = PHY_AUTO_NEG_LIMIT; i > 0; i--) { +		ret_val = hw->phy.ops.read_reg(hw, PHY_STATUS, &phy_status); +		if (ret_val) +			break; +		ret_val = hw->phy.ops.read_reg(hw, PHY_STATUS, &phy_status); +		if (ret_val) +			break; +		if (phy_status & MII_SR_AUTONEG_COMPLETE) +			break; +		msleep(100); +	} + +	/* PHY_AUTO_NEG_TIME expiration doesn't guarantee auto-negotiation +	 * has completed. +	 */ +	return ret_val; +} + +/** + * igc_copper_link_autoneg - Setup/Enable autoneg for copper link + * @hw: pointer to the HW structure + * + * Performs initial bounds checking on autoneg advertisement parameter, then + * configure to advertise the full capability.  Setup the PHY to autoneg + * and restart the negotiation process between the link partner.  If + * autoneg_wait_to_complete, then wait for autoneg to complete before exiting. + */ +static s32 igc_copper_link_autoneg(struct igc_hw *hw) +{ +	struct igc_phy_info *phy = &hw->phy; +	u16 phy_ctrl; +	s32 ret_val; + +	/* Perform some bounds checking on the autoneg advertisement +	 * parameter. +	 */ +	phy->autoneg_advertised &= phy->autoneg_mask; + +	/* If autoneg_advertised is zero, we assume it was not defaulted +	 * by the calling code so we set to advertise full capability. +	 */ +	if (phy->autoneg_advertised == 0) +		phy->autoneg_advertised = phy->autoneg_mask; + +	hw_dbg("Reconfiguring auto-neg advertisement params\n"); +	ret_val = igc_phy_setup_autoneg(hw); +	if (ret_val) { +		hw_dbg("Error Setting up Auto-Negotiation\n"); +		goto out; +	} +	hw_dbg("Restarting Auto-Neg\n"); + +	/* Restart auto-negotiation by setting the Auto Neg Enable bit and +	 * the Auto Neg Restart bit in the PHY control register. +	 */ +	ret_val = phy->ops.read_reg(hw, PHY_CONTROL, &phy_ctrl); +	if (ret_val) +		goto out; + +	phy_ctrl |= (MII_CR_AUTO_NEG_EN | MII_CR_RESTART_AUTO_NEG); +	ret_val = phy->ops.write_reg(hw, PHY_CONTROL, phy_ctrl); +	if (ret_val) +		goto out; + +	/* Does the user want to wait for Auto-Neg to complete here, or +	 * check at a later time (for example, callback routine). +	 */ +	if (phy->autoneg_wait_to_complete) { +		ret_val = igc_wait_autoneg(hw); +		if (ret_val) { +			hw_dbg("Error while waiting for autoneg to complete\n"); +			goto out; +		} +	} + +	hw->mac.get_link_status = true; + +out: +	return ret_val; +} + +/**   * igc_setup_copper_link - Configure copper link settings   * @hw: pointer to the HW structure   *  | 
