Skip to content

Commit

Permalink
amd-xgbe: Remove unnecessary spinlocks
Browse files Browse the repository at this point in the history
Remove the spinlocks around the ethtool get and set settings
functions and within the link adjustment callback routine.

Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Lendacky, Thomas authored and David S. Miller committed Aug 3, 2014
1 parent ae29223 commit 8c43a2c
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 20 deletions.
20 changes: 5 additions & 15 deletions drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -290,13 +290,9 @@ static int xgbe_get_settings(struct net_device *netdev,
if (!pdata->phydev)
return -ENODEV;

spin_lock_irq(&pdata->lock);

ret = phy_ethtool_gset(pdata->phydev, cmd);
cmd->transceiver = XCVR_EXTERNAL;

spin_unlock_irq(&pdata->lock);

DBGPR("<--xgbe_get_settings\n");

return ret;
Expand All @@ -315,17 +311,14 @@ static int xgbe_set_settings(struct net_device *netdev,
if (!pdata->phydev)
return -ENODEV;

spin_lock_irq(&pdata->lock);

speed = ethtool_cmd_speed(cmd);

ret = -EINVAL;
if (cmd->phy_address != phydev->addr)
goto unlock;
return -EINVAL;

if ((cmd->autoneg != AUTONEG_ENABLE) &&
(cmd->autoneg != AUTONEG_DISABLE))
goto unlock;
return -EINVAL;

if (cmd->autoneg == AUTONEG_DISABLE) {
switch (speed) {
Expand All @@ -334,16 +327,16 @@ static int xgbe_set_settings(struct net_device *netdev,
case SPEED_1000:
break;
default:
goto unlock;
return -EINVAL;
}

if (cmd->duplex != DUPLEX_FULL)
goto unlock;
return -EINVAL;
}

cmd->advertising &= phydev->supported;
if ((cmd->autoneg == AUTONEG_ENABLE) && !cmd->advertising)
goto unlock;
return -EINVAL;

ret = 0;
phydev->autoneg = cmd->autoneg;
Expand All @@ -359,9 +352,6 @@ static int xgbe_set_settings(struct net_device *netdev,
if (netif_running(netdev))
ret = phy_start_aneg(phydev);

unlock:
spin_unlock_irq(&pdata->lock);

DBGPR("<--xgbe_set_settings\n");

return ret;
Expand Down
5 changes: 0 additions & 5 deletions drivers/net/ethernet/amd/xgbe/xgbe-mdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,6 @@ static void xgbe_adjust_link(struct net_device *netdev)
struct xgbe_prv_data *pdata = netdev_priv(netdev);
struct xgbe_hw_if *hw_if = &pdata->hw_if;
struct phy_device *phydev = pdata->phydev;
unsigned long flags;
int new_state = 0;

if (phydev == NULL)
Expand All @@ -172,8 +171,6 @@ static void xgbe_adjust_link(struct net_device *netdev)
DBGPR_MDIO("-->xgbe_adjust_link: address=%d, newlink=%d, curlink=%d\n",
phydev->addr, phydev->link, pdata->phy_link);

spin_lock_irqsave(&pdata->lock, flags);

if (phydev->link) {
/* Flow control support */
if (pdata->pause_autoneg) {
Expand Down Expand Up @@ -229,8 +226,6 @@ static void xgbe_adjust_link(struct net_device *netdev)
if (new_state)
phy_print_status(phydev);

spin_unlock_irqrestore(&pdata->lock, flags);

DBGPR_MDIO("<--xgbe_adjust_link\n");
}

Expand Down

0 comments on commit 8c43a2c

Please sign in to comment.