From a0edf417a89a080b1e362d6d3ce04451f88b6393 Mon Sep 17 00:00:00 2001 From: Razvan Stefanescu Date: Thu, 18 May 2017 15:23:03 +0300 Subject: staging: dpaa2-ethsw: Improve carrier synchronization Port carrier synchronization should be performed when the switch ports are enabled, not at probe, to avoid miss-configuration. Signed-off-by: Razvan Stefanescu diff --git a/drivers/staging/fsl-dpaa2/ethsw/switch.c b/drivers/staging/fsl-dpaa2/ethsw/switch.c index 297ed99..3f2c964 100644 --- a/drivers/staging/fsl-dpaa2/ethsw/switch.c +++ b/drivers/staging/fsl-dpaa2/ethsw/switch.c @@ -831,7 +831,21 @@ static int ethsw_port_open(struct net_device *netdev) return err; } + /* sync carrier state */ + err = _ethsw_port_carrier_state_sync(netdev); + if (err) { + netdev_err(netdev, "_ethsw_port_carrier_state_sync err %d\n", + err); + goto err_carrier_sync; + } + return 0; + +err_carrier_sync: + dpsw_if_disable(port_priv->ethsw_priv->mc_io, 0, + port_priv->ethsw_priv->dpsw_handle, + port_priv->port_index); + return err; } static int ethsw_port_stop(struct net_device *netdev) @@ -1788,13 +1802,6 @@ ethsw_probe(struct fsl_mc_device *sw_dev) if (err) dev_warn(&netdev->dev, "ethsw_port_fdb_add_mc err %d\n", err); - - /* sync carrier state */ - err = _ethsw_port_carrier_state_sync(port_netdev); - if (err) - netdev_err(netdev, - "_ethsw_port_carrier_state_sync err %d\n", - err); } /* the switch starts up enabled */ -- cgit v0.10.2