| 1 | From 6d5c5bb13db3fd8e3dd0b82742b3957f41a4a3ac Mon Sep 17 00:00:00 2001 |
| 2 | From: Jonas Gorski <jonas.gorski@gmail.com> |
| 3 | Date: Thu, 24 May 2012 20:38:58 +0200 |
| 4 | Subject: [PATCH] bcm63xx_enet: reset port link state in bcm_enetsw_open |
| 5 | |
| 6 | bcm_enetsw_open disables all ports, but does not reset their link state. |
| 7 | This results in connected ports staying disabled after a ifdown/ifup |
| 8 | cycle, since bcm_enetsw_phy_poll only enables them if their current state |
| 9 | is different from the stored link state. |
| 10 | |
| 11 | Fix this by also resetting the port link state. |
| 12 | |
| 13 | Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> |
| 14 | --- |
| 15 | drivers/net/ethernet/broadcom/bcm63xx_enet.c | 2 ++ |
| 16 | 1 file changed, 2 insertions(+) |
| 17 | |
| 18 | --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c |
| 19 | +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c |
| 20 | @@ -2213,6 +2213,8 @@ static int bcm_enetsw_open(struct net_de |
| 21 | enetsw_writeb(priv, ENETSW_PTCTRL_RXDIS_MASK | |
| 22 | ENETSW_PTCTRL_TXDIS_MASK, |
| 23 | ENETSW_PTCTRL_REG(i)); |
| 24 | + |
| 25 | + priv->sw_port_link[i] = 0; |
| 26 | } |
| 27 | |
| 28 | /* reset mib */ |
| 29 | |