diff options
Diffstat (limited to 'drivers/net/sky2.c')
-rw-r--r-- | drivers/net/sky2.c | 9 |
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 | ||
152 | static void sky2_set_multicast(struct net_device *dev); | ||
153 | |||
152 | /* Access to external PHY */ | 154 | /* Access to external PHY */ |
153 | static int gm_phy_write(struct sky2_hw *hw, unsigned port, u16 reg, u16 val) | 155 | static 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 | ||