aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@linux-foundation.org>2007-09-05 11:56:19 -0400
committerJeff Garzik <jeff@garzik.org>2007-09-13 00:02:49 -0400
commitd1b139c039704c391ab47c6c9540c28f7fcaa489 (patch)
tree4d92c3167d85903202aa75a8f522901afa5585fe /drivers
parent5f08e46b621a769e52a9545a23ab1d5fb2aec1d4 (diff)
sky2: restore multicast list on resume and other ops
Need to restore multicast settings on resume and after 'ethtool -r'. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/sky2.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index e6d937ec6886..5d812de65d90 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -149,6 +149,8 @@ static const char *yukon2_name[] = {
149 "FE", /* 0xb7 */ 149 "FE", /* 0xb7 */
150}; 150};
151 151
152static void sky2_set_multicast(struct net_device *dev);
153
152/* Access to external PHY */ 154/* Access to external PHY */
153static int gm_phy_write(struct sky2_hw *hw, unsigned port, u16 reg, u16 val) 155static int gm_phy_write(struct sky2_hw *hw, unsigned port, u16 reg, u16 val)
154{ 156{
@@ -2900,8 +2902,10 @@ static int sky2_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)
2900 sky2->autoneg = ecmd->autoneg; 2902 sky2->autoneg = ecmd->autoneg;
2901 sky2->advertising = ecmd->advertising; 2903 sky2->advertising = ecmd->advertising;
2902 2904
2903 if (netif_running(dev)) 2905 if (netif_running(dev)) {
2904 sky2_phy_reinit(sky2); 2906 sky2_phy_reinit(sky2);
2907 sky2_set_multicast(dev);
2908 }
2905 2909
2906 return 0; 2910 return 0;
2907} 2911}
@@ -2994,6 +2998,7 @@ static int sky2_nway_reset(struct net_device *dev)
2994 return -EINVAL; 2998 return -EINVAL;
2995 2999
2996 sky2_phy_reinit(sky2); 3000 sky2_phy_reinit(sky2);
3001 sky2_set_multicast(dev);
2997 3002
2998 return 0; 3003 return 0;
2999} 3004}
@@ -4171,6 +4176,8 @@ static int sky2_resume(struct pci_dev *pdev)
4171 dev_close(dev); 4176 dev_close(dev);
4172 goto out; 4177 goto out;
4173 } 4178 }
4179
4180 sky2_set_multicast(dev);
4174 } 4181 }
4175 } 4182 }
4176 4183