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 aa61708bea69..310e0b9c2657 100644
--- a/drivers/net/geneve.c
+++ b/drivers/net/geneve.c
@@ -922,8 +922,8 @@ tx_error:
922 dev->stats.collisions++; 922 dev->stats.collisions++;
923 else if (err == -ENETUNREACH) 923 else if (err == -ENETUNREACH)
924 dev->stats.tx_carrier_errors++; 924 dev->stats.tx_carrier_errors++;
925 else 925
926 dev->stats.tx_errors++; 926 dev->stats.tx_errors++;
927 return NETDEV_TX_OK; 927 return NETDEV_TX_OK;
928} 928}
929 929
@@ -1012,8 +1012,8 @@ tx_error:
1012 dev->stats.collisions++; 1012 dev->stats.collisions++;
1013 else if (err == -ENETUNREACH) 1013 else if (err == -ENETUNREACH)
1014 dev->stats.tx_carrier_errors++; 1014 dev->stats.tx_carrier_errors++;
1015 else 1015
1016 dev->stats.tx_errors++; 1016 dev->stats.tx_errors++;
1017 return NETDEV_TX_OK; 1017 return NETDEV_TX_OK;
1018} 1018}
1019#endif 1019#endif
@@ -1463,6 +1463,7 @@ struct net_device *geneve_dev_create_fb(struct net *net, const char *name,
1463{ 1463{
1464 struct nlattr *tb[IFLA_MAX + 1]; 1464 struct nlattr *tb[IFLA_MAX + 1];
1465 struct net_device *dev; 1465 struct net_device *dev;
1466 LIST_HEAD(list_kill);
1466 int err; 1467 int err;
1467 1468
1468 memset(tb, 0, sizeof(tb)); 1469 memset(tb, 0, sizeof(tb));
@@ -1474,8 +1475,10 @@ struct net_device *geneve_dev_create_fb(struct net *net, const char *name,
1474 err = geneve_configure(net, dev, &geneve_remote_unspec, 1475 err = geneve_configure(net, dev, &geneve_remote_unspec,
1475 0, 0, 0, 0, htons(dst_port), true, 1476 0, 0, 0, 0, htons(dst_port), true,
1476 GENEVE_F_UDP_ZERO_CSUM6_RX); 1477 GENEVE_F_UDP_ZERO_CSUM6_RX);
1477 if (err) 1478 if (err) {
1478 goto err; 1479 free_netdev(dev);
1480 return ERR_PTR(err);
1481 }
1479 1482
1480 /* openvswitch users expect packet sizes to be unrestricted, 1483 /* openvswitch users expect packet sizes to be unrestricted,
1481 * so set the largest MTU we can. 1484 * so set the largest MTU we can.
@@ -1484,10 +1487,15 @@ struct net_device *geneve_dev_create_fb(struct net *net, const char *name,
1484 if (err) 1487 if (err)
1485 goto err; 1488 goto err;
1486 1489
1490 err = rtnl_configure_link(dev, NULL);
1491 if (err < 0)
1492 goto err;
1493
1487 return dev; 1494 return dev;
1488 1495
1489 err: 1496 err:
1490 free_netdev(dev); 1497 geneve_dellink(dev, &list_kill);
1498 unregister_netdevice_many(&list_kill);
1491 return ERR_PTR(err); 1499 return ERR_PTR(err);
1492} 1500}
1493EXPORT_SYMBOL_GPL(geneve_dev_create_fb); 1501EXPORT_SYMBOL_GPL(geneve_dev_create_fb);