summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm63xx/patches-3.6/416-bcm63xx_enet-reset-port-link-state-in-bcm_enetsw_ope.patch
blob: 6d8e5a72dbc84e3f1b9ddb7a49af770240b8efef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
From 6d5c5bb13db3fd8e3dd0b82742b3957f41a4a3ac Mon Sep 17 00:00:00 2001
From: Jonas Gorski <jonas.gorski@gmail.com>
Date: Thu, 24 May 2012 20:38:58 +0200
Subject: [PATCH] bcm63xx_enet: reset port link state in bcm_enetsw_open

bcm_enetsw_open disables all ports, but does not reset their link state.
This results in connected ports staying disabled after a ifdown/ifup
cycle, since bcm_enetsw_phy_poll only enables them if their current state
is different from the stored link state.

Fix this by also resetting the port link state.

Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
---
 drivers/net/ethernet/broadcom/bcm63xx_enet.c |    2 ++
 1 file changed, 2 insertions(+)

--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
@@ -2213,6 +2213,8 @@ static int bcm_enetsw_open(struct net_de
 		enetsw_writeb(priv, ENETSW_PTCTRL_RXDIS_MASK |
 			      ENETSW_PTCTRL_TXDIS_MASK,
 			      ENETSW_PTCTRL_REG(i));
+
+		priv->sw_port_link[i] = 0;
 	}
 
 	/* reset mib */