aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/geneve.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/geneve.c')
-rw-r--r--drivers/net/geneve.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
index cadefe4fdaa2..cc39cefeae45 100644
--- a/drivers/net/geneve.c
+++ b/drivers/net/geneve.c
@@ -958,8 +958,8 @@ tx_error:
958 dev->stats.collisions++; 958 dev->stats.collisions++;
959 else if (err == -ENETUNREACH) 959 else if (err == -ENETUNREACH)
960 dev->stats.tx_carrier_errors++; 960 dev->stats.tx_carrier_errors++;
961 else 961
962 dev->stats.tx_errors++; 962 dev->stats.tx_errors++;
963 return NETDEV_TX_OK; 963 return NETDEV_TX_OK;
964} 964}
965 965
@@ -1048,8 +1048,8 @@ tx_error:
1048 dev->stats.collisions++; 1048 dev->stats.collisions++;
1049 else if (err == -ENETUNREACH) 1049 else if (err == -ENETUNREACH)
1050 dev->stats.tx_carrier_errors++; 1050 dev->stats.tx_carrier_errors++;
1051 else 1051
1052 dev->stats.tx_errors++; 1052 dev->stats.tx_errors++;
1053 return NETDEV_TX_OK; 1053 return NETDEV_TX_OK;
1054} 1054}
1055#endif 1055#endif
@@ -1508,6 +1508,7 @@ struct net_device *geneve_dev_create_fb(struct net *net, const char *name,
1508{ 1508{
1509 struct nlattr *tb[IFLA_MAX + 1]; 1509 struct nlattr *tb[IFLA_MAX + 1];
1510 struct net_device *dev; 1510 struct net_device *dev;
1511 LIST_HEAD(list_kill);
1511 int err; 1512 int err;
1512 1513
1513 memset(tb, 0, sizeof(tb)); 1514 memset(tb, 0, sizeof(tb));
@@ -1519,8 +1520,10 @@ struct net_device *geneve_dev_create_fb(struct net *net, const char *name,
1519 err = geneve_configure(net, dev, &geneve_remote_unspec, 1520 err = geneve_configure(net, dev, &geneve_remote_unspec,
1520 0, 0, 0, 0, htons(dst_port), true, 1521 0, 0, 0, 0, htons(dst_port), true,
1521 GENEVE_F_UDP_ZERO_CSUM6_RX); 1522 GENEVE_F_UDP_ZERO_CSUM6_RX);
1522 if (err) 1523 if (err) {
1523 goto err; 1524 free_netdev(dev);
1525 return ERR_PTR(err);
1526 }
1524 1527
1525 /* openvswitch users expect packet sizes to be unrestricted, 1528 /* openvswitch users expect packet sizes to be unrestricted,
1526 * so set the largest MTU we can. 1529 * so set the largest MTU we can.
@@ -1529,10 +1532,15 @@ struct net_device *geneve_dev_create_fb(struct net *net, const char *name,
1529 if (err) 1532 if (err)
1530 goto err; 1533 goto err;
1531 1534
1535 err = rtnl_configure_link(dev, NULL);
1536 if (err < 0)
1537 goto err;
1538
1532 return dev; 1539 return dev;
1533 1540
1534 err: 1541 err:
1535 free_netdev(dev); 1542 geneve_dellink(dev, &list_kill);
1543 unregister_netdevice_many(&list_kill);
1536 return ERR_PTR(err); 1544 return ERR_PTR(err);
1537} 1545}
1538EXPORT_SYMBOL_GPL(geneve_dev_create_fb); 1546EXPORT_SYMBOL_GPL(geneve_dev_create_fb);