aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/vrf.c
diff options
context:
space:
mode:
authorDavid Ahern <dsa@cumulusnetworks.com>2015-09-29 23:07:16 -0400
committerDavid S. Miller <davem@davemloft.net>2015-09-29 23:40:33 -0400
commit93a7e7e837af6846052481da974320c19ab82e5c (patch)
tree1b0372cdf0fd4fb77be732dd39a7866503b69941 /drivers/net/vrf.c
parent8e1ed7058b3c79b085cf5b1529698a157499074c (diff)
net: Remove the now unused vrf_ptr
Signed-off-by: David Ahern <dsa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/vrf.c')
-rw-r--r--drivers/net/vrf.c32
1 files changed, 2 insertions, 30 deletions
diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c
index 72f1892ebad0..df872f4efb0d 100644
--- a/drivers/net/vrf.c
+++ b/drivers/net/vrf.c
@@ -396,18 +396,15 @@ static void __vrf_insert_slave(struct slave_queue *queue, struct slave *slave)
396 396
397static int do_vrf_add_slave(struct net_device *dev, struct net_device *port_dev) 397static int do_vrf_add_slave(struct net_device *dev, struct net_device *port_dev)
398{ 398{
399 struct net_vrf_dev *vrf_ptr = kmalloc(sizeof(*vrf_ptr), GFP_KERNEL);
400 struct slave *slave = kzalloc(sizeof(*slave), GFP_KERNEL); 399 struct slave *slave = kzalloc(sizeof(*slave), GFP_KERNEL);
401 struct net_vrf *vrf = netdev_priv(dev); 400 struct net_vrf *vrf = netdev_priv(dev);
402 struct slave_queue *queue = &vrf->queue; 401 struct slave_queue *queue = &vrf->queue;
403 int ret = -ENOMEM; 402 int ret = -ENOMEM;
404 403
405 if (!slave || !vrf_ptr) 404 if (!slave)
406 goto out_fail; 405 goto out_fail;
407 406
408 slave->dev = port_dev; 407 slave->dev = port_dev;
409 vrf_ptr->ifindex = dev->ifindex;
410 vrf_ptr->tb_id = vrf->tb_id;
411 408
412 /* register the packet handler for slave ports */ 409 /* register the packet handler for slave ports */
413 ret = netdev_rx_handler_register(port_dev, vrf_handle_frame, dev); 410 ret = netdev_rx_handler_register(port_dev, vrf_handle_frame, dev);
@@ -424,7 +421,6 @@ static int do_vrf_add_slave(struct net_device *dev, struct net_device *port_dev)
424 421
425 port_dev->flags |= IFF_SLAVE; 422 port_dev->flags |= IFF_SLAVE;
426 __vrf_insert_slave(queue, slave); 423 __vrf_insert_slave(queue, slave);
427 rcu_assign_pointer(port_dev->vrf_ptr, vrf_ptr);
428 cycle_netdev(port_dev); 424 cycle_netdev(port_dev);
429 425
430 return 0; 426 return 0;
@@ -432,7 +428,6 @@ static int do_vrf_add_slave(struct net_device *dev, struct net_device *port_dev)
432out_unregister: 428out_unregister:
433 netdev_rx_handler_unregister(port_dev); 429 netdev_rx_handler_unregister(port_dev);
434out_fail: 430out_fail:
435 kfree(vrf_ptr);
436 kfree(slave); 431 kfree(slave);
437 return ret; 432 return ret;
438} 433}
@@ -448,21 +443,15 @@ static int vrf_add_slave(struct net_device *dev, struct net_device *port_dev)
448/* inverse of do_vrf_add_slave */ 443/* inverse of do_vrf_add_slave */
449static int do_vrf_del_slave(struct net_device *dev, struct net_device *port_dev) 444static int do_vrf_del_slave(struct net_device *dev, struct net_device *port_dev)
450{ 445{
451 struct net_vrf_dev *vrf_ptr = rtnl_dereference(port_dev->vrf_ptr);
452 struct net_vrf *vrf = netdev_priv(dev); 446 struct net_vrf *vrf = netdev_priv(dev);
453 struct slave_queue *queue = &vrf->queue; 447 struct slave_queue *queue = &vrf->queue;
454 struct slave *slave; 448 struct slave *slave;
455 449
456 RCU_INIT_POINTER(port_dev->vrf_ptr, NULL);
457
458 netdev_upper_dev_unlink(port_dev, dev); 450 netdev_upper_dev_unlink(port_dev, dev);
459 port_dev->flags &= ~IFF_SLAVE; 451 port_dev->flags &= ~IFF_SLAVE;
460 452
461 netdev_rx_handler_unregister(port_dev); 453 netdev_rx_handler_unregister(port_dev);
462 454
463 /* after netdev_rx_handler_unregister for synchronize_rcu */
464 kfree(vrf_ptr);
465
466 cycle_netdev(port_dev); 455 cycle_netdev(port_dev);
467 456
468 slave = __vrf_find_slave_dev(queue, port_dev); 457 slave = __vrf_find_slave_dev(queue, port_dev);
@@ -601,10 +590,6 @@ static int vrf_validate(struct nlattr *tb[], struct nlattr *data[])
601 590
602static void vrf_dellink(struct net_device *dev, struct list_head *head) 591static void vrf_dellink(struct net_device *dev, struct list_head *head)
603{ 592{
604 struct net_vrf_dev *vrf_ptr = rtnl_dereference(dev->vrf_ptr);
605
606 RCU_INIT_POINTER(dev->vrf_ptr, NULL);
607 kfree_rcu(vrf_ptr, rcu);
608 unregister_netdevice_queue(dev, head); 593 unregister_netdevice_queue(dev, head);
609} 594}
610 595
@@ -612,7 +597,6 @@ static int vrf_newlink(struct net *src_net, struct net_device *dev,
612 struct nlattr *tb[], struct nlattr *data[]) 597 struct nlattr *tb[], struct nlattr *data[])
613{ 598{
614 struct net_vrf *vrf = netdev_priv(dev); 599 struct net_vrf *vrf = netdev_priv(dev);
615 struct net_vrf_dev *vrf_ptr;
616 int err; 600 int err;
617 601
618 if (!data || !data[IFLA_VRF_TABLE]) 602 if (!data || !data[IFLA_VRF_TABLE])
@@ -622,24 +606,13 @@ static int vrf_newlink(struct net *src_net, struct net_device *dev,
622 606
623 dev->priv_flags |= IFF_L3MDEV_MASTER; 607 dev->priv_flags |= IFF_L3MDEV_MASTER;
624 608
625 err = -ENOMEM;
626 vrf_ptr = kmalloc(sizeof(*dev->vrf_ptr), GFP_KERNEL);
627 if (!vrf_ptr)
628 goto out_fail;
629
630 vrf_ptr->ifindex = dev->ifindex;
631 vrf_ptr->tb_id = vrf->tb_id;
632
633 err = register_netdevice(dev); 609 err = register_netdevice(dev);
634 if (err < 0) 610 if (err < 0)
635 goto out_fail; 611 goto out_fail;
636 612
637 rcu_assign_pointer(dev->vrf_ptr, vrf_ptr);
638
639 return 0; 613 return 0;
640 614
641out_fail: 615out_fail:
642 kfree(vrf_ptr);
643 free_netdev(dev); 616 free_netdev(dev);
644 return err; 617 return err;
645} 618}
@@ -683,10 +656,9 @@ static int vrf_device_event(struct notifier_block *unused,
683 656
684 /* only care about unregister events to drop slave references */ 657 /* only care about unregister events to drop slave references */
685 if (event == NETDEV_UNREGISTER) { 658 if (event == NETDEV_UNREGISTER) {
686 struct net_vrf_dev *vrf_ptr = rtnl_dereference(dev->vrf_ptr);
687 struct net_device *vrf_dev; 659 struct net_device *vrf_dev;
688 660
689 if (!vrf_ptr || netif_is_l3_master(dev)) 661 if (netif_is_l3_master(dev))
690 goto out; 662 goto out;
691 663
692 vrf_dev = netdev_master_upper_dev_get(dev); 664 vrf_dev = netdev_master_upper_dev_get(dev);