aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/skge.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/skge.c')
-rw-r--r--drivers/net/skge.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/drivers/net/skge.c b/drivers/net/skge.c
index 2e26dced13a1..3bca52c142fe 100644
--- a/drivers/net/skge.c
+++ b/drivers/net/skge.c
@@ -319,6 +319,7 @@ static int skge_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
319 struct skge_port *skge = netdev_priv(dev); 319 struct skge_port *skge = netdev_priv(dev);
320 const struct skge_hw *hw = skge->hw; 320 const struct skge_hw *hw = skge->hw;
321 u32 supported = skge_supported_modes(hw); 321 u32 supported = skge_supported_modes(hw);
322 int err = 0;
322 323
323 if (ecmd->autoneg == AUTONEG_ENABLE) { 324 if (ecmd->autoneg == AUTONEG_ENABLE) {
324 ecmd->advertising = supported; 325 ecmd->advertising = supported;
@@ -367,8 +368,14 @@ static int skge_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
367 skge->autoneg = ecmd->autoneg; 368 skge->autoneg = ecmd->autoneg;
368 skge->advertising = ecmd->advertising; 369 skge->advertising = ecmd->advertising;
369 370
370 if (netif_running(dev)) 371 if (netif_running(dev)) {
371 skge_phy_reset(skge); 372 skge_down(dev);
373 err = skge_up(dev);
374 if (err) {
375 dev_close(dev);
376 return err;
377 }
378 }
372 379
373 return (0); 380 return (0);
374} 381}
@@ -593,6 +600,7 @@ static int skge_set_pauseparam(struct net_device *dev,
593{ 600{
594 struct skge_port *skge = netdev_priv(dev); 601 struct skge_port *skge = netdev_priv(dev);
595 struct ethtool_pauseparam old; 602 struct ethtool_pauseparam old;
603 int err = 0;
596 604
597 skge_get_pauseparam(dev, &old); 605 skge_get_pauseparam(dev, &old);
598 606
@@ -609,8 +617,14 @@ static int skge_set_pauseparam(struct net_device *dev,
609 skge->flow_control = FLOW_MODE_NONE; 617 skge->flow_control = FLOW_MODE_NONE;
610 } 618 }
611 619
612 if (netif_running(dev)) 620 if (netif_running(dev)) {
613 skge_phy_reset(skge); 621 skge_down(dev);
622 err = skge_up(dev);
623 if (err) {
624 dev_close(dev);
625 return err;
626 }
627 }
614 628
615 return 0; 629 return 0;
616} 630}