1/* 2 * Linux WiMAX 3 * Debugfs support 4 * 5 * 6 * Copyright (C) 2005-2006 Intel Corporation <linux-wimax@intel.com> 7 * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com> 8 * 9 * This program is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License version 11 * 2 as published by the Free Software Foundation. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 21 * 02110-1301, USA. 22 */ 23#include <linux/debugfs.h> 24#include <linux/wimax.h> 25#include "wimax-internal.h" 26 27#define D_SUBMODULE debugfs 28#include "debug-levels.h" 29 30 31#define __debugfs_register(prefix, name, parent) \ 32do { \ 33 result = d_level_register_debugfs(prefix, name, parent); \ 34 if (result < 0) \ 35 goto error; \ 36} while (0) 37 38 39int wimax_debugfs_add(struct wimax_dev *wimax_dev) 40{ 41 int result; 42 struct net_device *net_dev = wimax_dev->net_dev; 43 struct device *dev = net_dev->dev.parent; 44 struct dentry *dentry; 45 char buf[128]; 46 47 snprintf(buf, sizeof(buf), "wimax:%s", net_dev->name); 48 dentry = debugfs_create_dir(buf, NULL); 49 result = PTR_ERR(dentry); 50 if (IS_ERR(dentry)) { 51 if (result == -ENODEV) 52 result = 0; /* No debugfs support */ 53 else 54 dev_err(dev, "Can't create debugfs dentry: %d\n", 55 result); 56 goto out; 57 } 58 wimax_dev->debugfs_dentry = dentry; 59 __debugfs_register("wimax_dl_", debugfs, dentry); 60 __debugfs_register("wimax_dl_", id_table, dentry); 61 __debugfs_register("wimax_dl_", op_msg, dentry); 62 __debugfs_register("wimax_dl_", op_reset, dentry); 63 __debugfs_register("wimax_dl_", op_rfkill, dentry); 64 __debugfs_register("wimax_dl_", op_state_get, dentry); 65 __debugfs_register("wimax_dl_", stack, dentry); 66 result = 0; 67out: 68 return result; 69 70error: 71 debugfs_remove_recursive(wimax_dev->debugfs_dentry); 72 return result; 73} 74 75void wimax_debugfs_rm(struct wimax_dev *wimax_dev) 76{ 77 debugfs_remove_recursive(wimax_dev->debugfs_dentry); 78} 79 80 81