From: Stephen Hemminger Date: Wed, 5 Sep 2007 15:56:19 +0000 (+0100) Subject: sky2: restore multicast list on resume and other ops X-Git-Tag: v2.6.23-rc7~41^2~9 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d1b139c039704c391ab47c6c9540c28f7fcaa489;p=linux-2.6 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 Signed-off-by: Jeff Garzik --- diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index e6d937ec68..5d812de65d 100644 --- a/drivers/net/sky2.c +++ b/drivers/net/sky2.c @@ -149,6 +149,8 @@ static const char *yukon2_name[] = { "FE", /* 0xb7 */ }; +static void sky2_set_multicast(struct net_device *dev); + /* Access to external PHY */ static int gm_phy_write(struct sky2_hw *hw, unsigned port, u16 reg, u16 val) { @@ -2900,8 +2902,10 @@ static int sky2_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd) sky2->autoneg = ecmd->autoneg; sky2->advertising = ecmd->advertising; - if (netif_running(dev)) + if (netif_running(dev)) { sky2_phy_reinit(sky2); + sky2_set_multicast(dev); + } return 0; } @@ -2994,6 +2998,7 @@ static int sky2_nway_reset(struct net_device *dev) return -EINVAL; sky2_phy_reinit(sky2); + sky2_set_multicast(dev); return 0; } @@ -4171,6 +4176,8 @@ static int sky2_resume(struct pci_dev *pdev) dev_close(dev); goto out; } + + sky2_set_multicast(dev); } }