wimax/i2400m: trace commands sent from user space on the "echo" pipe
authorInaky Perez-Gonzalez <inaky@linux.intel.com>
Tue, 31 Mar 2009 00:51:54 +0000 (17:51 -0700)
committerInaky Perez-Gonzalez <inaky@linux.intel.com>
Fri, 29 May 2009 01:01:35 +0000 (18:01 -0700)
When commands are sent from user space, trace both the command sent
and the answer received over the "echo" pipe instead of over the
"trace" pipe when command tracing is enabled. As well, when the device
sends a reports/indications, send it over the "echo" pipe.

The "trace" pipe is used by the device to send firmware traces;
gets confusing. Another named pipe makes it easier to split debug
information.

Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
drivers/net/wimax/i2400m/driver.c
drivers/net/wimax/i2400m/rx.c

index a21318b34bf23fd219fec6b06c2f9049077bdfc3..d33389fd7bd3d097fdf358513816da5be2d5901a 100644 (file)
@@ -231,13 +231,20 @@ int i2400m_op_msg_from_user(struct wimax_dev *wimax_dev,
        d_fnstart(4, dev, "(wimax_dev %p [i2400m %p] msg_buf %p "
                  "msg_len %zu genl_info %p)\n", wimax_dev, i2400m,
                  msg_buf, msg_len, genl_info);
+       if (unlikely(i2400m->trace_msg_from_user))
+               wimax_msg(&i2400m->wimax_dev, "echo",
+                         msg_buf, msg_len, GFP_KERNEL);
        ack_skb = i2400m_msg_to_dev(i2400m, msg_buf, msg_len);
        result = PTR_ERR(ack_skb);
        if (IS_ERR(ack_skb))
                goto error_msg_to_dev;
-       if (unlikely(i2400m->trace_msg_from_user))
-               wimax_msg(&i2400m->wimax_dev, "trace",
-                         msg_buf, msg_len, GFP_KERNEL);
+       if (unlikely(i2400m->trace_msg_from_user)) {
+               const void *ack_data;
+               size_t ack_len;
+               ack_data = wimax_msg_data_len(ack_skb, &ack_len);
+               wimax_msg(&i2400m->wimax_dev, "echo",
+                         ack_data, ack_len, GFP_KERNEL);
+       }
        result = wimax_msg_send(&i2400m->wimax_dev, ack_skb);
 error_msg_to_dev:
        d_fnend(4, dev, "(wimax_dev %p [i2400m %p] msg_buf %p msg_len %zu "
index f9fc389023224e2f70880192ae765d78488ce84d..a4adc78102fb47bf058c871bc2c006d7cea5e391 100644 (file)
@@ -309,6 +309,9 @@ void i2400m_rx_ctl(struct i2400m *i2400m, struct sk_buff *skb_rx,
                skb_get(skb_rx);
                i2400m_queue_work(i2400m, i2400m_report_hook_work,
                                  GFP_KERNEL, &args, sizeof(args));
+               if (unlikely(i2400m->trace_msg_from_user))
+                       wimax_msg(&i2400m->wimax_dev, "echo",
+                                 l3l4_hdr, size, GFP_KERNEL);
                result = wimax_msg(&i2400m->wimax_dev, NULL, l3l4_hdr, size,
                                   GFP_KERNEL);
                if (result < 0)