1*b1815fd9SAlexander Aring /* This program is free software; you can redistribute it and/or modify 2*b1815fd9SAlexander Aring * it under the terms of the GNU General Public License version 2 3*b1815fd9SAlexander Aring * as published by the Free Software Foundation. 4*b1815fd9SAlexander Aring * 5*b1815fd9SAlexander Aring * This program is distributed in the hope that it will be useful, 6*b1815fd9SAlexander Aring * but WITHOUT ANY WARRANTY; without even the implied warranty of 7*b1815fd9SAlexander Aring * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 8*b1815fd9SAlexander Aring * GNU General Public License for more details. 9*b1815fd9SAlexander Aring * 10*b1815fd9SAlexander Aring * Authors: 11*b1815fd9SAlexander Aring * (C) 2015 Pengutronix, Alexander Aring <aar@pengutronix.de> 12*b1815fd9SAlexander Aring * Copyright (c) 2015 Nordic Semiconductor. All Rights Reserved. 13*b1815fd9SAlexander Aring */ 14*b1815fd9SAlexander Aring 15*b1815fd9SAlexander Aring #include <net/6lowpan.h> 16*b1815fd9SAlexander Aring 17*b1815fd9SAlexander Aring #include "6lowpan_i.h" 18*b1815fd9SAlexander Aring 19*b1815fd9SAlexander Aring static struct dentry *lowpan_debugfs; 20*b1815fd9SAlexander Aring 21*b1815fd9SAlexander Aring int lowpan_dev_debugfs_init(struct net_device *dev) 22*b1815fd9SAlexander Aring { 23*b1815fd9SAlexander Aring struct lowpan_priv *lpriv = lowpan_priv(dev); 24*b1815fd9SAlexander Aring 25*b1815fd9SAlexander Aring /* creating the root */ 26*b1815fd9SAlexander Aring lpriv->iface_debugfs = debugfs_create_dir(dev->name, lowpan_debugfs); 27*b1815fd9SAlexander Aring if (!lpriv->iface_debugfs) 28*b1815fd9SAlexander Aring goto fail; 29*b1815fd9SAlexander Aring 30*b1815fd9SAlexander Aring return 0; 31*b1815fd9SAlexander Aring 32*b1815fd9SAlexander Aring fail: 33*b1815fd9SAlexander Aring return -EINVAL; 34*b1815fd9SAlexander Aring } 35*b1815fd9SAlexander Aring 36*b1815fd9SAlexander Aring void lowpan_dev_debugfs_exit(struct net_device *dev) 37*b1815fd9SAlexander Aring { 38*b1815fd9SAlexander Aring debugfs_remove_recursive(lowpan_priv(dev)->iface_debugfs); 39*b1815fd9SAlexander Aring } 40*b1815fd9SAlexander Aring 41*b1815fd9SAlexander Aring int __init lowpan_debugfs_init(void) 42*b1815fd9SAlexander Aring { 43*b1815fd9SAlexander Aring lowpan_debugfs = debugfs_create_dir("6lowpan", NULL); 44*b1815fd9SAlexander Aring if (!lowpan_debugfs) 45*b1815fd9SAlexander Aring return -EINVAL; 46*b1815fd9SAlexander Aring 47*b1815fd9SAlexander Aring return 0; 48*b1815fd9SAlexander Aring } 49*b1815fd9SAlexander Aring 50*b1815fd9SAlexander Aring void lowpan_debugfs_exit(void) 51*b1815fd9SAlexander Aring { 52*b1815fd9SAlexander Aring debugfs_remove_recursive(lowpan_debugfs); 53*b1815fd9SAlexander Aring } 54