diff options
author | Bartosz Markowski <bartosz.markowski@tieto.com> | 2012-02-29 15:15:40 +0100 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 11:06:50 +0200 |
commit | 30044654a02bc9fcf123b015c17a192d95f22190 (patch) | |
tree | 0ccbe18e16e08a7bf7f555cf30163f1991831627 | |
parent | 97f810839b26de6787fe45dfb9c4ae4f9fc62eb9 (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.c | 12 | ||||
-rw-r--r-- | drivers/staging/cw1200/cw1200.h | 3 | ||||
-rw-r--r-- | drivers/staging/cw1200/debug.c | 29 |
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; |