diff options
author | Inaky Perez-Gonzalez <inaky@linux.intel.com> | 2009-04-13 13:26:34 -0400 |
---|---|---|
committer | Inaky Perez-Gonzalez <inaky@linux.intel.com> | 2009-05-28 21:01:42 -0400 |
commit | 223beea23810577353c4cc71ce2f44dbba0d4e16 (patch) | |
tree | 4ef63bbe6701cbf24beed89ec4be1c1ed2768888 /drivers/net/wimax | |
parent | 44b849d11bf6801a642dd1aa9a70e470d046d273 (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.c | 5 | ||||
-rw-r--r-- | drivers/net/wimax/i2400m/driver.c | 10 |
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); |
249 | error_msg_to_dev: | 239 | error_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 " |