aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wimax
diff options
context:
space:
mode:
authorInaky Perez-Gonzalez <inaky@linux.intel.com>2009-04-13 13:26:34 -0400
committerInaky Perez-Gonzalez <inaky@linux.intel.com>2009-05-28 21:01:42 -0400
commit223beea23810577353c4cc71ce2f44dbba0d4e16 (patch)
tree4ef63bbe6701cbf24beed89ec4be1c1ed2768888 /drivers/net/wimax
parent44b849d11bf6801a642dd1aa9a70e470d046d273 (diff)
wimax/i2400m: allow kernel commands to device to be logged too
By running 'echo 1 > /sys/kernel/debug/wimax:wmxX/i2400m/trace_msg_from_user', the driver will echo to user space all the commands being sent to the device from user space, along with the responses. However, this only helps with the commands being sent from user space; with this patch, the trace hook is moved to i2400m_msg_to_dev(), which is the single access point for running commands to the device (both by user space and the kernel driver). This allows better debugging by having a complete stream of commands/acks and reports. Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Diffstat (limited to 'drivers/net/wimax')
-rw-r--r--drivers/net/wimax/i2400m/control.c5
-rw-r--r--drivers/net/wimax/i2400m/driver.c10
2 files changed, 5 insertions, 10 deletions
diff --git a/drivers/net/wimax/i2400m/control.c b/drivers/net/wimax/i2400m/control.c
index b3cadb626fe0..0f58418748aa 100644
--- a/drivers/net/wimax/i2400m/control.c
+++ b/drivers/net/wimax/i2400m/control.c
@@ -721,6 +721,8 @@ struct sk_buff *i2400m_msg_to_dev(struct i2400m *i2400m,
721 ack_timeout = HZ; 721 ack_timeout = HZ;
722 }; 722 };
723 723
724 if (unlikely(i2400m->trace_msg_from_user))
725 wimax_msg(&i2400m->wimax_dev, "echo", buf, buf_len, GFP_KERNEL);
724 /* The RX path in rx.c will put any response for this message 726 /* The RX path in rx.c will put any response for this message
725 * in i2400m->ack_skb and wake us up. If we cancel the wait, 727 * in i2400m->ack_skb and wake us up. If we cancel the wait,
726 * we need to change the value of i2400m->ack_skb to something 728 * we need to change the value of i2400m->ack_skb to something
@@ -755,6 +757,9 @@ struct sk_buff *i2400m_msg_to_dev(struct i2400m *i2400m,
755 ack_l3l4_hdr = wimax_msg_data_len(ack_skb, &ack_len); 757 ack_l3l4_hdr = wimax_msg_data_len(ack_skb, &ack_len);
756 758
757 /* Check the ack and deliver it if it is ok */ 759 /* Check the ack and deliver it if it is ok */
760 if (unlikely(i2400m->trace_msg_from_user))
761 wimax_msg(&i2400m->wimax_dev, "echo",
762 ack_l3l4_hdr, ack_len, GFP_KERNEL);
758 result = i2400m_msg_size_check(i2400m, ack_l3l4_hdr, ack_len); 763 result = i2400m_msg_size_check(i2400m, ack_l3l4_hdr, ack_len);
759 if (result < 0) { 764 if (result < 0) {
760 dev_err(dev, "HW BUG? reply to message 0x%04x: %d\n", 765 dev_err(dev, "HW BUG? reply to message 0x%04x: %d\n",
diff --git a/drivers/net/wimax/i2400m/driver.c b/drivers/net/wimax/i2400m/driver.c
index d33389fd7bd3..ef16c573bb22 100644
--- a/drivers/net/wimax/i2400m/driver.c
+++ b/drivers/net/wimax/i2400m/driver.c
@@ -231,20 +231,10 @@ int i2400m_op_msg_from_user(struct wimax_dev *wimax_dev,
231 d_fnstart(4, dev, "(wimax_dev %p [i2400m %p] msg_buf %p " 231 d_fnstart(4, dev, "(wimax_dev %p [i2400m %p] msg_buf %p "
232 "msg_len %zu genl_info %p)\n", wimax_dev, i2400m, 232 "msg_len %zu genl_info %p)\n", wimax_dev, i2400m,
233 msg_buf, msg_len, genl_info); 233 msg_buf, msg_len, genl_info);
234 if (unlikely(i2400m->trace_msg_from_user))
235 wimax_msg(&i2400m->wimax_dev, "echo",
236 msg_buf, msg_len, GFP_KERNEL);
237 ack_skb = i2400m_msg_to_dev(i2400m, msg_buf, msg_len); 234 ack_skb = i2400m_msg_to_dev(i2400m, msg_buf, msg_len);
238 result = PTR_ERR(ack_skb); 235 result = PTR_ERR(ack_skb);
239 if (IS_ERR(ack_skb)) 236 if (IS_ERR(ack_skb))
240 goto error_msg_to_dev; 237 goto error_msg_to_dev;
241 if (unlikely(i2400m->trace_msg_from_user)) {
242 const void *ack_data;
243 size_t ack_len;
244 ack_data = wimax_msg_data_len(ack_skb, &ack_len);
245 wimax_msg(&i2400m->wimax_dev, "echo",
246 ack_data, ack_len, GFP_KERNEL);
247 }
248 result = wimax_msg_send(&i2400m->wimax_dev, ack_skb); 238 result = wimax_msg_send(&i2400m->wimax_dev, ack_skb);
249error_msg_to_dev: 239error_msg_to_dev:
250 d_fnend(4, dev, "(wimax_dev %p [i2400m %p] msg_buf %p msg_len %zu " 240 d_fnend(4, dev, "(wimax_dev %p [i2400m %p] msg_buf %p msg_len %zu "