Commit e5facc75 authored by Rajkumar Manoharan's avatar Rajkumar Manoharan Committed by John W. Linville

ath9k_htc: Cleanup HTC debugfs

Move the ath9k_htc debugfs under ieee80211 to be inline
with ath9k driver and it also helps to simplify debug code.
Signed-off-by: default avatarRajkumar Manoharan <rmanoharan@atheros.com>
Acked-by: default avatarSujith Manoharan <Sujith.Manoharan@atheros.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 00bca7e2
...@@ -359,14 +359,6 @@ struct ath_rx_stats { ...@@ -359,14 +359,6 @@ struct ath_rx_stats {
struct ath9k_debug { struct ath9k_debug {
struct dentry *debugfs_phy; struct dentry *debugfs_phy;
struct dentry *debugfs_tgt_int_stats;
struct dentry *debugfs_tgt_tx_stats;
struct dentry *debugfs_tgt_rx_stats;
struct dentry *debugfs_xmit;
struct dentry *debugfs_recv;
struct dentry *debugfs_slot;
struct dentry *debugfs_queue;
struct dentry *debugfs_debug;
struct ath_tx_stats tx_stats; struct ath_tx_stats tx_stats;
struct ath_rx_stats rx_stats; struct ath_rx_stats rx_stats;
}; };
...@@ -613,15 +605,9 @@ void ath9k_htc_suspend(struct htc_target *htc_handle); ...@@ -613,15 +605,9 @@ void ath9k_htc_suspend(struct htc_target *htc_handle);
int ath9k_htc_resume(struct htc_target *htc_handle); int ath9k_htc_resume(struct htc_target *htc_handle);
#endif #endif
#ifdef CONFIG_ATH9K_HTC_DEBUGFS #ifdef CONFIG_ATH9K_HTC_DEBUGFS
int ath9k_htc_debug_create_root(void);
void ath9k_htc_debug_remove_root(void);
int ath9k_htc_init_debug(struct ath_hw *ah); int ath9k_htc_init_debug(struct ath_hw *ah);
void ath9k_htc_exit_debug(struct ath_hw *ah);
#else #else
static inline int ath9k_htc_debug_create_root(void) { return 0; };
static inline void ath9k_htc_debug_remove_root(void) {};
static inline int ath9k_htc_init_debug(struct ath_hw *ah) { return 0; }; static inline int ath9k_htc_init_debug(struct ath_hw *ah) { return 0; };
static inline void ath9k_htc_exit_debug(struct ath_hw *ah) {};
#endif /* CONFIG_ATH9K_HTC_DEBUGFS */ #endif /* CONFIG_ATH9K_HTC_DEBUGFS */
#endif /* HTC_H */ #endif /* HTC_H */
...@@ -16,8 +16,6 @@ ...@@ -16,8 +16,6 @@
#include "htc.h" #include "htc.h"
static struct dentry *ath9k_debugfs_root;
static int ath9k_debugfs_open(struct inode *inode, struct file *file) static int ath9k_debugfs_open(struct inode *inode, struct file *file)
{ {
file->private_data = inode->i_private; file->private_data = inode->i_private;
...@@ -481,100 +479,27 @@ int ath9k_htc_init_debug(struct ath_hw *ah) ...@@ -481,100 +479,27 @@ int ath9k_htc_init_debug(struct ath_hw *ah)
struct ath_common *common = ath9k_hw_common(ah); struct ath_common *common = ath9k_hw_common(ah);
struct ath9k_htc_priv *priv = (struct ath9k_htc_priv *) common->priv; struct ath9k_htc_priv *priv = (struct ath9k_htc_priv *) common->priv;
if (!ath9k_debugfs_root) priv->debug.debugfs_phy = debugfs_create_dir(KBUILD_MODNAME,
return -ENOENT; priv->hw->wiphy->debugfsdir);
priv->debug.debugfs_phy = debugfs_create_dir(wiphy_name(priv->hw->wiphy),
ath9k_debugfs_root);
if (!priv->debug.debugfs_phy) if (!priv->debug.debugfs_phy)
goto err; return -ENOMEM;
priv->debug.debugfs_tgt_int_stats = debugfs_create_file("tgt_int_stats",
S_IRUSR,
priv->debug.debugfs_phy,
priv, &fops_tgt_int_stats);
if (!priv->debug.debugfs_tgt_int_stats)
goto err;
priv->debug.debugfs_tgt_tx_stats = debugfs_create_file("tgt_tx_stats",
S_IRUSR,
priv->debug.debugfs_phy,
priv, &fops_tgt_tx_stats);
if (!priv->debug.debugfs_tgt_tx_stats)
goto err;
priv->debug.debugfs_tgt_rx_stats = debugfs_create_file("tgt_rx_stats",
S_IRUSR,
priv->debug.debugfs_phy,
priv, &fops_tgt_rx_stats);
if (!priv->debug.debugfs_tgt_rx_stats)
goto err;
priv->debug.debugfs_xmit = debugfs_create_file("xmit", S_IRUSR,
priv->debug.debugfs_phy,
priv, &fops_xmit);
if (!priv->debug.debugfs_xmit)
goto err;
priv->debug.debugfs_recv = debugfs_create_file("recv", S_IRUSR,
priv->debug.debugfs_phy,
priv, &fops_recv);
if (!priv->debug.debugfs_recv)
goto err;
priv->debug.debugfs_slot = debugfs_create_file("slot", S_IRUSR,
priv->debug.debugfs_phy,
priv, &fops_slot);
if (!priv->debug.debugfs_slot)
goto err;
priv->debug.debugfs_queue = debugfs_create_file("queue", S_IRUSR,
priv->debug.debugfs_phy,
priv, &fops_queue);
if (!priv->debug.debugfs_queue)
goto err;
priv->debug.debugfs_debug = debugfs_create_file("debug",
S_IRUSR | S_IWUSR,
priv->debug.debugfs_phy,
priv, &fops_debug);
if (!priv->debug.debugfs_debug)
goto err;
return 0;
err:
ath9k_htc_exit_debug(ah);
return -ENOMEM;
}
void ath9k_htc_exit_debug(struct ath_hw *ah)
{
struct ath_common *common = ath9k_hw_common(ah);
struct ath9k_htc_priv *priv = (struct ath9k_htc_priv *) common->priv;
debugfs_remove(priv->debug.debugfs_queue);
debugfs_remove(priv->debug.debugfs_slot);
debugfs_remove(priv->debug.debugfs_recv);
debugfs_remove(priv->debug.debugfs_xmit);
debugfs_remove(priv->debug.debugfs_tgt_int_stats);
debugfs_remove(priv->debug.debugfs_tgt_tx_stats);
debugfs_remove(priv->debug.debugfs_tgt_rx_stats);
debugfs_remove(priv->debug.debugfs_debug);
debugfs_remove(priv->debug.debugfs_phy);
}
int ath9k_htc_debug_create_root(void) debugfs_create_file("tgt_int_stats", S_IRUSR, priv->debug.debugfs_phy,
{ priv, &fops_tgt_int_stats);
ath9k_debugfs_root = debugfs_create_dir(KBUILD_MODNAME, NULL); debugfs_create_file("tgt_tx_stats", S_IRUSR, priv->debug.debugfs_phy,
if (!ath9k_debugfs_root) priv, &fops_tgt_tx_stats);
return -ENOENT; debugfs_create_file("tgt_rx_stats", S_IRUSR, priv->debug.debugfs_phy,
priv, &fops_tgt_rx_stats);
debugfs_create_file("xmit", S_IRUSR, priv->debug.debugfs_phy,
priv, &fops_xmit);
debugfs_create_file("recv", S_IRUSR, priv->debug.debugfs_phy,
priv, &fops_recv);
debugfs_create_file("slot", S_IRUSR, priv->debug.debugfs_phy,
priv, &fops_slot);
debugfs_create_file("queue", S_IRUSR, priv->debug.debugfs_phy,
priv, &fops_queue);
debugfs_create_file("debug", S_IRUSR | S_IWUSR, priv->debug.debugfs_phy,
priv, &fops_debug);
return 0; return 0;
} }
void ath9k_htc_debug_remove_root(void)
{
debugfs_remove(ath9k_debugfs_root);
ath9k_debugfs_root = NULL;
}
...@@ -140,7 +140,6 @@ static int ath9k_htc_wait_for_target(struct ath9k_htc_priv *priv) ...@@ -140,7 +140,6 @@ static int ath9k_htc_wait_for_target(struct ath9k_htc_priv *priv)
static void ath9k_deinit_priv(struct ath9k_htc_priv *priv) static void ath9k_deinit_priv(struct ath9k_htc_priv *priv)
{ {
ath9k_htc_exit_debug(priv->ah);
ath9k_hw_deinit(priv->ah); ath9k_hw_deinit(priv->ah);
kfree(priv->ah); kfree(priv->ah);
priv->ah = NULL; priv->ah = NULL;
...@@ -700,12 +699,6 @@ static int ath9k_init_priv(struct ath9k_htc_priv *priv, ...@@ -700,12 +699,6 @@ static int ath9k_init_priv(struct ath9k_htc_priv *priv,
goto err_hw; goto err_hw;
} }
ret = ath9k_htc_init_debug(ah);
if (ret) {
ath_err(common, "Unable to create debugfs files\n");
goto err_debug;
}
ret = ath9k_init_queues(priv); ret = ath9k_init_queues(priv);
if (ret) if (ret)
goto err_queues; goto err_queues;
...@@ -725,8 +718,6 @@ static int ath9k_init_priv(struct ath9k_htc_priv *priv, ...@@ -725,8 +718,6 @@ static int ath9k_init_priv(struct ath9k_htc_priv *priv,
return 0; return 0;
err_queues: err_queues:
ath9k_htc_exit_debug(ah);
err_debug:
ath9k_hw_deinit(ah); ath9k_hw_deinit(ah);
err_hw: err_hw:
...@@ -867,6 +858,12 @@ static int ath9k_init_device(struct ath9k_htc_priv *priv, ...@@ -867,6 +858,12 @@ static int ath9k_init_device(struct ath9k_htc_priv *priv,
goto err_world; goto err_world;
} }
error = ath9k_htc_init_debug(priv->ah);
if (error) {
ath_err(common, "Unable to create debugfs files\n");
goto err_world;
}
ath_dbg(common, ATH_DBG_CONFIG, ath_dbg(common, ATH_DBG_CONFIG,
"WMI:%d, BCN:%d, CAB:%d, UAPSD:%d, MGMT:%d, " "WMI:%d, BCN:%d, CAB:%d, UAPSD:%d, MGMT:%d, "
"BE:%d, BK:%d, VI:%d, VO:%d\n", "BE:%d, BK:%d, VI:%d, VO:%d\n",
...@@ -987,38 +984,20 @@ int ath9k_htc_resume(struct htc_target *htc_handle) ...@@ -987,38 +984,20 @@ int ath9k_htc_resume(struct htc_target *htc_handle)
static int __init ath9k_htc_init(void) static int __init ath9k_htc_init(void)
{ {
int error; if (ath9k_hif_usb_init() < 0) {
error = ath9k_htc_debug_create_root();
if (error < 0) {
printk(KERN_ERR
"ath9k_htc: Unable to create debugfs root: %d\n",
error);
goto err_dbg;
}
error = ath9k_hif_usb_init();
if (error < 0) {
printk(KERN_ERR printk(KERN_ERR
"ath9k_htc: No USB devices found," "ath9k_htc: No USB devices found,"
" driver not installed.\n"); " driver not installed.\n");
error = -ENODEV; return -ENODEV;
goto err_usb;
} }
return 0; return 0;
err_usb:
ath9k_htc_debug_remove_root();
err_dbg:
return error;
} }
module_init(ath9k_htc_init); module_init(ath9k_htc_init);
static void __exit ath9k_htc_exit(void) static void __exit ath9k_htc_exit(void)
{ {
ath9k_hif_usb_exit(); ath9k_hif_usb_exit();
ath9k_htc_debug_remove_root();
printk(KERN_INFO "ath9k_htc: Driver unloaded\n"); printk(KERN_INFO "ath9k_htc: Driver unloaded\n");
} }
module_exit(ath9k_htc_exit); module_exit(ath9k_htc_exit);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment