diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-10-09 03:02:35 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-10-09 03:02:35 -0400 |
commit | 1236d6bb6e19fc72ffc6bbcdeb1bfefe450e54ee (patch) | |
tree | 47da3feee8e263e8c9352c85cf518e624be3c211 /net/dsa/slave.c | |
parent | 750b1a6894ecc9b178c6e3d0a1170122971b2036 (diff) | |
parent | 8a5776a5f49812d29fe4b2d0a2d71675c3facf3f (diff) |
Merge 4.14-rc4 into staging-next
We want the staging/iio fixes in here as well to handle merge issues.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/dsa/slave.c')
-rw-r--r-- | net/dsa/slave.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/net/dsa/slave.c b/net/dsa/slave.c index 2afa99506f8b..865e29e62bad 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c | |||
@@ -1301,28 +1301,33 @@ int dsa_slave_create(struct dsa_port *port, const char *name) | |||
1301 | p->old_duplex = -1; | 1301 | p->old_duplex = -1; |
1302 | 1302 | ||
1303 | port->netdev = slave_dev; | 1303 | port->netdev = slave_dev; |
1304 | ret = register_netdev(slave_dev); | ||
1305 | if (ret) { | ||
1306 | netdev_err(master, "error %d registering interface %s\n", | ||
1307 | ret, slave_dev->name); | ||
1308 | port->netdev = NULL; | ||
1309 | free_percpu(p->stats64); | ||
1310 | free_netdev(slave_dev); | ||
1311 | return ret; | ||
1312 | } | ||
1313 | 1304 | ||
1314 | netif_carrier_off(slave_dev); | 1305 | netif_carrier_off(slave_dev); |
1315 | 1306 | ||
1316 | ret = dsa_slave_phy_setup(p, slave_dev); | 1307 | ret = dsa_slave_phy_setup(p, slave_dev); |
1317 | if (ret) { | 1308 | if (ret) { |
1318 | netdev_err(master, "error %d setting up slave phy\n", ret); | 1309 | netdev_err(master, "error %d setting up slave phy\n", ret); |
1319 | unregister_netdev(slave_dev); | 1310 | goto out_free; |
1320 | free_percpu(p->stats64); | 1311 | } |
1321 | free_netdev(slave_dev); | 1312 | |
1322 | return ret; | 1313 | ret = register_netdev(slave_dev); |
1314 | if (ret) { | ||
1315 | netdev_err(master, "error %d registering interface %s\n", | ||
1316 | ret, slave_dev->name); | ||
1317 | goto out_phy; | ||
1323 | } | 1318 | } |
1324 | 1319 | ||
1325 | return 0; | 1320 | return 0; |
1321 | |||
1322 | out_phy: | ||
1323 | phy_disconnect(p->phy); | ||
1324 | if (of_phy_is_fixed_link(p->dp->dn)) | ||
1325 | of_phy_deregister_fixed_link(p->dp->dn); | ||
1326 | out_free: | ||
1327 | free_percpu(p->stats64); | ||
1328 | free_netdev(slave_dev); | ||
1329 | port->netdev = NULL; | ||
1330 | return ret; | ||
1326 | } | 1331 | } |
1327 | 1332 | ||
1328 | void dsa_slave_destroy(struct net_device *slave_dev) | 1333 | void dsa_slave_destroy(struct net_device *slave_dev) |