aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/macvtap_main.c
diff options
context:
space:
mode:
authorSainath Grandhi <sainath.grandhi@intel.com>2017-02-10 16:03:48 -0800
committerDavid S. Miller <davem@davemloft.net>2017-02-11 20:59:41 -0500
commitebc05ba7e8600b52a2a0c87a43105143368aca2a (patch)
treede9da1f26aa63eb1bea5b6f01b85fcd3fc26cade /drivers/net/macvtap_main.c
parenttap: Renaming tap related APIs, data structures, macros (diff)
downloadlinux-dev-ebc05ba7e8600b52a2a0c87a43105143368aca2a.tar.xz
linux-dev-ebc05ba7e8600b52a2a0c87a43105143368aca2a.zip
tap: Tap character device creation/destroy API
This patch provides tap device create/destroy APIs in tap.c. Signed-off-by: Sainath Grandhi <sainath.grandhi@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/macvtap_main.c')
-rw-r--r--drivers/net/macvtap_main.c30
1 files changed, 9 insertions, 21 deletions
diff --git a/drivers/net/macvtap_main.c b/drivers/net/macvtap_main.c
index 548f339a75bd..215ab7abae89 100644
--- a/drivers/net/macvtap_main.c
+++ b/drivers/net/macvtap_main.c
@@ -28,7 +28,6 @@
* Variables for dealing with macvtaps device numbers.
*/
static dev_t macvtap_major;
-#define MACVTAP_NUM_DEVS (1U << MINORBITS)
static const void *macvtap_net_namespace(struct device *d)
{
@@ -159,57 +158,46 @@ static struct notifier_block macvtap_notifier_block __read_mostly = {
.notifier_call = macvtap_device_event,
};
-extern struct file_operations tap_fops;
static int macvtap_init(void)
{
int err;
- err = alloc_chrdev_region(&macvtap_major, 0,
- MACVTAP_NUM_DEVS, "macvtap");
- if (err)
- goto out1;
+ err = tap_create_cdev(&macvtap_cdev, &macvtap_major, "macvtap");
- cdev_init(&macvtap_cdev, &tap_fops);
- err = cdev_add(&macvtap_cdev, macvtap_major, MACVTAP_NUM_DEVS);
if (err)
- goto out2;
+ goto out1;
err = class_register(&macvtap_class);
if (err)
- goto out3;
+ goto out2;
err = register_netdevice_notifier(&macvtap_notifier_block);
if (err)
- goto out4;
+ goto out3;
err = macvlan_link_register(&macvtap_link_ops);
if (err)
- goto out5;
+ goto out4;
return 0;
-out5:
- unregister_netdevice_notifier(&macvtap_notifier_block);
out4:
- class_unregister(&macvtap_class);
+ unregister_netdevice_notifier(&macvtap_notifier_block);
out3:
- cdev_del(&macvtap_cdev);
+ class_unregister(&macvtap_class);
out2:
- unregister_chrdev_region(macvtap_major, MACVTAP_NUM_DEVS);
+ tap_destroy_cdev(macvtap_major, &macvtap_cdev);
out1:
return err;
}
module_init(macvtap_init);
-extern struct idr minor_idr;
static void macvtap_exit(void)
{
rtnl_link_unregister(&macvtap_link_ops);
unregister_netdevice_notifier(&macvtap_notifier_block);
class_unregister(&macvtap_class);
- cdev_del(&macvtap_cdev);
- unregister_chrdev_region(macvtap_major, MACVTAP_NUM_DEVS);
- idr_destroy(&minor_idr);
+ tap_destroy_cdev(macvtap_major, &macvtap_cdev);
}
module_exit(macvtap_exit);