| /* | |
| * Linux WiMAX | |
| * Debugfs support | |
| * | |
| * | |
| * Copyright (C) 2005-2006 Intel Corporation <linux-wimax@intel.com> | |
| * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com> | |
| * | |
| * This program is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU General Public License version | |
| * 2 as published by the Free Software Foundation. | |
| * | |
| * This program is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| * GNU General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU General Public License | |
| * along with this program; if not, write to the Free Software | |
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | |
| * 02110-1301, USA. | |
| */ | |
| #include <linux/debugfs.h> | |
| #include <linux/wimax.h> | |
| #include "wimax-internal.h" | |
| #define D_SUBMODULE debugfs | |
| #include "debug-levels.h" | |
| #define __debugfs_register(prefix, name, parent) \ | |
| do { \ | |
| result = d_level_register_debugfs(prefix, name, parent); \ | |
| if (result < 0) \ | |
| goto error; \ | |
| } while (0) | |
| int wimax_debugfs_add(struct wimax_dev *wimax_dev) | |
| { | |
| int result; | |
| struct net_device *net_dev = wimax_dev->net_dev; | |
| struct device *dev = net_dev->dev.parent; | |
| struct dentry *dentry; | |
| char buf[128]; | |
| snprintf(buf, sizeof(buf), "wimax:%s", net_dev->name); | |
| dentry = debugfs_create_dir(buf, NULL); | |
| result = PTR_ERR(dentry); | |
| if (IS_ERR(dentry)) { | |
| if (result == -ENODEV) | |
| result = 0; /* No debugfs support */ | |
| else | |
| dev_err(dev, "Can't create debugfs dentry: %d\n", | |
| result); | |
| goto out; | |
| } | |
| wimax_dev->debugfs_dentry = dentry; | |
| __debugfs_register("wimax_dl_", debugfs, dentry); | |
| __debugfs_register("wimax_dl_", id_table, dentry); | |
| __debugfs_register("wimax_dl_", op_msg, dentry); | |
| __debugfs_register("wimax_dl_", op_reset, dentry); | |
| __debugfs_register("wimax_dl_", op_rfkill, dentry); | |
| __debugfs_register("wimax_dl_", op_state_get, dentry); | |
| __debugfs_register("wimax_dl_", stack, dentry); | |
| result = 0; | |
| out: | |
| return result; | |
| error: | |
| debugfs_remove_recursive(wimax_dev->debugfs_dentry); | |
| return result; | |
| } | |
| void wimax_debugfs_rm(struct wimax_dev *wimax_dev) | |
| { | |
| debugfs_remove_recursive(wimax_dev->debugfs_dentry); | |
| } | |