[PATCH 93/99] cw1200: Dynamic WSM messages dumps

Dmitry Tarnyagin dmitry.tarnyagin at stericsson.com
Wed Feb 29 14:15:40 UTC 2012


From: Bartosz Markowski <bartosz.markowski at tieto.com>

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 at tieto.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/50357
Reviewed-by: QATOOLS
Reviewed-by: QABUILD
---
 drivers/staging/cw1200/bh.c     |   12 ++++++++----
 drivers/staging/cw1200/cw1200.h |    3 +++
 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 34bf7d7..5c0fc62 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 46b8087..81b4533 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 7a2da55..46db833 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;
-- 
1.7.8.3



More information about the kernel mailing list