summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Markowski <bartosz.markowski@tieto.com>2012-02-29 15:15:40 +0100
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:06:50 +0200
commit30044654a02bc9fcf123b015c17a192d95f22190 (patch)
tree0ccbe18e16e08a7bf7f555cf30163f1991831627
parent97f810839b26de6787fe45dfb9c4ae4f9fc62eb9 (diff)
cw1200: Dynamic WSM messages dumps
Adds dynamic WSM dumps support. Creates new debugFS entry 'wsm_dumps', which can be used to dynamicly enable and disable WSM messages dumps. ST-Ericsson ID: 419537 ST-Ericsson FOSS-OUT ID: NA Change-Id: Id87f2e47cbc3023551dbae9d79981a6ce1cf6d29 Signed-off-by: Bartosz Markowski <bartosz.markowski@tieto.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/50357 Reviewed-by: QATOOLS Reviewed-by: QABUILD
-rw-r--r--drivers/staging/cw1200/bh.c12
-rw-r--r--drivers/staging/cw1200/cw1200.h3
-rw-r--r--drivers/staging/cw1200/debug.c29
3 files changed, 40 insertions, 4 deletions
diff --git a/drivers/staging/cw1200/bh.c b/drivers/staging/cw1200/bh.c
index 34bf7d733b8..5c0fc628a89 100644
--- a/drivers/staging/cw1200/bh.c
+++ b/drivers/staging/cw1200/bh.c
@@ -397,8 +397,10 @@ rx:
break;
#if defined(CONFIG_CW1200_WSM_DUMPS)
- print_hex_dump_bytes("<-- ", DUMP_PREFIX_NONE,
- data, wsm_len);
+ if (unlikely(priv->wsm_enable_wsm_dumps))
+ print_hex_dump_bytes("<-- ",
+ DUMP_PREFIX_NONE,
+ data, wsm_len);
#endif /* CONFIG_CW1200_WSM_DUMPS */
wsm_id = __le32_to_cpu(wsm->id) & 0xFFF;
@@ -520,8 +522,10 @@ tx:
}
#if defined(CONFIG_CW1200_WSM_DUMPS)
- print_hex_dump_bytes("--> ", DUMP_PREFIX_NONE,
- data, __le32_to_cpu(wsm->len));
+ if (unlikely(priv->wsm_enable_wsm_dumps))
+ print_hex_dump_bytes("--> ",
+ DUMP_PREFIX_NONE,
+ data, __le32_to_cpu(wsm->len));
#endif /* CONFIG_CW1200_WSM_DUMPS */
wsm_txed(priv, data);
diff --git a/drivers/staging/cw1200/cw1200.h b/drivers/staging/cw1200/cw1200.h
index 46b8087eaa6..81b453339ae 100644
--- a/drivers/staging/cw1200/cw1200.h
+++ b/drivers/staging/cw1200/cw1200.h
@@ -206,6 +206,9 @@ struct cw1200_common {
struct wsm_cbc wsm_cbc;
atomic_t tx_lock;
+ /* WSM debug */
+ int wsm_enable_wsm_dumps;
+
/* Scan status */
struct cw1200_scan scan;
diff --git a/drivers/staging/cw1200/debug.c b/drivers/staging/cw1200/debug.c
index 7a2da551a52..46db83316d5 100644
--- a/drivers/staging/cw1200/debug.c
+++ b/drivers/staging/cw1200/debug.c
@@ -468,6 +468,31 @@ static const struct file_operations fops_hang = {
};
#endif
+static ssize_t cw1200_wsm_dumps(struct file *file,
+ const char __user *user_buf, size_t count, loff_t *ppos)
+{
+ struct cw1200_common *priv = file->private_data;
+ char buf[1];
+
+ if (!count)
+ return -EINVAL;
+ if (copy_from_user(buf, user_buf, 1))
+ return -EFAULT;
+
+ if (buf[0] == '1')
+ priv->wsm_enable_wsm_dumps = 1;
+ else
+ priv->wsm_enable_wsm_dumps = 0;
+
+ return count;
+}
+
+static const struct file_operations fops_wsm_dumps = {
+ .open = cw1200_generic_open,
+ .write = cw1200_wsm_dumps,
+ .llseek = default_llseek,
+};
+
int cw1200_debug_init(struct cw1200_common *priv)
{
int ret = -ENOMEM;
@@ -500,6 +525,10 @@ int cw1200_debug_init(struct cw1200_common *priv)
goto err;
#endif
+ if (!debugfs_create_file("wsm_dumps", S_IWUSR, d->debugfs_phy,
+ priv, &fops_wsm_dumps))
+ goto err;
+
ret = cw1200_itp_init(priv);
if (ret)
goto err;