diff options
author | David S. Miller <davem@davemloft.net> | 2011-04-25 15:46:37 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-04-25 15:46:37 -0400 |
commit | 345578d97c549995ddbcc178f16f710602cc06bb (patch) | |
tree | ce05e39a01ffce847f6f7f65f19b1e8e20dbf0c2 /drivers/net/wireless/rt2x00/rt2x00debug.c | |
parent | fe2a70eefa18a3e419dd9a23e16af14258b7cc20 (diff) | |
parent | cfef6047c4027a8448ec8dafeaf2bb362cc882e4 (diff) |
Merge branch 'for-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00debug.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00debug.c | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.c b/drivers/net/wireless/rt2x00/rt2x00debug.c index 66166ef037f5..78787fcc919e 100644 --- a/drivers/net/wireless/rt2x00/rt2x00debug.c +++ b/drivers/net/wireless/rt2x00/rt2x00debug.c | |||
@@ -63,7 +63,8 @@ struct rt2x00debug_intf { | |||
63 | * - driver folder | 63 | * - driver folder |
64 | * - driver file | 64 | * - driver file |
65 | * - chipset file | 65 | * - chipset file |
66 | * - device flags file | 66 | * - device state flags file |
67 | * - device capability flags file | ||
67 | * - register folder | 68 | * - register folder |
68 | * - csr offset/value files | 69 | * - csr offset/value files |
69 | * - eeprom offset/value files | 70 | * - eeprom offset/value files |
@@ -78,6 +79,7 @@ struct rt2x00debug_intf { | |||
78 | struct dentry *driver_entry; | 79 | struct dentry *driver_entry; |
79 | struct dentry *chipset_entry; | 80 | struct dentry *chipset_entry; |
80 | struct dentry *dev_flags; | 81 | struct dentry *dev_flags; |
82 | struct dentry *cap_flags; | ||
81 | struct dentry *register_folder; | 83 | struct dentry *register_folder; |
82 | struct dentry *csr_off_entry; | 84 | struct dentry *csr_off_entry; |
83 | struct dentry *csr_val_entry; | 85 | struct dentry *csr_val_entry; |
@@ -553,6 +555,35 @@ static const struct file_operations rt2x00debug_fop_dev_flags = { | |||
553 | .llseek = default_llseek, | 555 | .llseek = default_llseek, |
554 | }; | 556 | }; |
555 | 557 | ||
558 | static ssize_t rt2x00debug_read_cap_flags(struct file *file, | ||
559 | char __user *buf, | ||
560 | size_t length, | ||
561 | loff_t *offset) | ||
562 | { | ||
563 | struct rt2x00debug_intf *intf = file->private_data; | ||
564 | char line[16]; | ||
565 | size_t size; | ||
566 | |||
567 | if (*offset) | ||
568 | return 0; | ||
569 | |||
570 | size = sprintf(line, "0x%.8x\n", (unsigned int)intf->rt2x00dev->cap_flags); | ||
571 | |||
572 | if (copy_to_user(buf, line, size)) | ||
573 | return -EFAULT; | ||
574 | |||
575 | *offset += size; | ||
576 | return size; | ||
577 | } | ||
578 | |||
579 | static const struct file_operations rt2x00debug_fop_cap_flags = { | ||
580 | .owner = THIS_MODULE, | ||
581 | .read = rt2x00debug_read_cap_flags, | ||
582 | .open = rt2x00debug_file_open, | ||
583 | .release = rt2x00debug_file_release, | ||
584 | .llseek = default_llseek, | ||
585 | }; | ||
586 | |||
556 | static struct dentry *rt2x00debug_create_file_driver(const char *name, | 587 | static struct dentry *rt2x00debug_create_file_driver(const char *name, |
557 | struct rt2x00debug_intf | 588 | struct rt2x00debug_intf |
558 | *intf, | 589 | *intf, |
@@ -652,6 +683,12 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev) | |||
652 | if (IS_ERR(intf->dev_flags) || !intf->dev_flags) | 683 | if (IS_ERR(intf->dev_flags) || !intf->dev_flags) |
653 | goto exit; | 684 | goto exit; |
654 | 685 | ||
686 | intf->cap_flags = debugfs_create_file("cap_flags", S_IRUSR, | ||
687 | intf->driver_folder, intf, | ||
688 | &rt2x00debug_fop_cap_flags); | ||
689 | if (IS_ERR(intf->cap_flags) || !intf->cap_flags) | ||
690 | goto exit; | ||
691 | |||
655 | intf->register_folder = | 692 | intf->register_folder = |
656 | debugfs_create_dir("register", intf->driver_folder); | 693 | debugfs_create_dir("register", intf->driver_folder); |
657 | if (IS_ERR(intf->register_folder) || !intf->register_folder) | 694 | if (IS_ERR(intf->register_folder) || !intf->register_folder) |
@@ -705,7 +742,7 @@ void rt2x00debug_register(struct rt2x00_dev *rt2x00dev) | |||
705 | intf, &rt2x00debug_fop_queue_stats); | 742 | intf, &rt2x00debug_fop_queue_stats); |
706 | 743 | ||
707 | #ifdef CONFIG_RT2X00_LIB_CRYPTO | 744 | #ifdef CONFIG_RT2X00_LIB_CRYPTO |
708 | if (test_bit(CONFIG_SUPPORT_HW_CRYPTO, &rt2x00dev->flags)) | 745 | if (test_bit(CAPABILITY_HW_CRYPTO, &rt2x00dev->cap_flags)) |
709 | intf->crypto_stats_entry = | 746 | intf->crypto_stats_entry = |
710 | debugfs_create_file("crypto", S_IRUGO, intf->queue_folder, | 747 | debugfs_create_file("crypto", S_IRUGO, intf->queue_folder, |
711 | intf, &rt2x00debug_fop_crypto_stats); | 748 | intf, &rt2x00debug_fop_crypto_stats); |
@@ -743,6 +780,7 @@ void rt2x00debug_deregister(struct rt2x00_dev *rt2x00dev) | |||
743 | debugfs_remove(intf->csr_off_entry); | 780 | debugfs_remove(intf->csr_off_entry); |
744 | debugfs_remove(intf->register_folder); | 781 | debugfs_remove(intf->register_folder); |
745 | debugfs_remove(intf->dev_flags); | 782 | debugfs_remove(intf->dev_flags); |
783 | debugfs_remove(intf->cap_flags); | ||
746 | debugfs_remove(intf->chipset_entry); | 784 | debugfs_remove(intf->chipset_entry); |
747 | debugfs_remove(intf->driver_entry); | 785 | debugfs_remove(intf->driver_entry); |
748 | debugfs_remove(intf->driver_folder); | 786 | debugfs_remove(intf->driver_folder); |