From: Andy Gospodarek <gospo@redhat.com> Date: Fri, 29 Aug 2008 14:34:36 -0400 Subject: [net] skge: don't clear MC state on link down Message-id: 20080829183435.GM31090@gospo.rdu.redhat.com O-Subject: [RHEL5.3 PATCH] skge: don't clear MC state on link down Bugzilla: 406051 RH-Acked-by: Neil Horman <nhorman@redhat.com> RH-Acked-by: David Miller <davem@redhat.com> RH-Acked-by: John W. Linville <linville@redhat.com> This is a backport of the following upstream fix that I originally pushed to Stephen (but he re-wrote): commit 758140900a82e3ed3bb2be1d4705dd352fe44825 Author: Stephen Hemminger <shemminger@osdl.org> Date: Fri Dec 1 11:41:08 2006 -0800 [PATCH] skge: don't clear MC state on link down I would rather fix Andy's problem by not clearing multicast information on link down. Also, add code to restore multicast state after ethtool phy reset. This is for BZ 406051 that was created from a cloned RHEL4 bug. Customers are annoyed when we fix one RHEL and no the other, so we are adding it to RHEL5. diff --git a/drivers/net/skge.c b/drivers/net/skge.c index ad878df..e070002 100644 --- a/drivers/net/skge.c +++ b/drivers/net/skge.c @@ -1928,8 +1928,6 @@ static void yukon_link_down(struct skge_port *skge) int port = skge->port; u16 ctrl; - gm_phy_write(hw, port, PHY_MARV_INT_MASK, 0); - ctrl = gma_read16(hw, port, GM_GP_CTRL); ctrl &= ~(GM_GPCR_RX_ENA | GM_GPCR_TX_ENA); gma_write16(hw, port, GM_GP_CTRL, ctrl); @@ -1943,7 +1941,6 @@ static void yukon_link_down(struct skge_port *skge) } - yukon_reset(hw, port); skge_link_down(skge); yukon_init(hw, port); @@ -2031,6 +2028,7 @@ static void skge_phy_reset(struct skge_port *skge) { struct skge_hw *hw = skge->hw; int port = skge->port; + struct net_device *dev = hw->dev[port]; netif_stop_queue(skge->netdev); netif_carrier_off(skge->netdev); @@ -2044,6 +2042,8 @@ static void skge_phy_reset(struct skge_port *skge) yukon_init(hw, port); } mutex_unlock(&hw->phy_mutex); + + dev->set_multicast_list(dev); } /* Basic MII support */