diff mbox

[2/2] qca-swiss-army-knife: add ath10k trace-cmd plugin

Message ID 1376939466-8282-2-git-send-email-kvalo@qca.qualcomm.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Kalle Valo Aug. 19, 2013, 7:11 p.m. UTC
This one's a skeleton as well.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
---
 tracing/plugins/ath10k.py |  133 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 133 insertions(+)
 create mode 100644 tracing/plugins/ath10k.py

Comments

Luis R. Rodriguez Sept. 4, 2013, 6:57 p.m. UTC | #1
On Mon, Aug 19, 2013 at 12:11 PM, Kalle Valo <kvalo@qca.qualcomm.com> wrote:
> This one's a skeleton as well.
>
> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>

Applied both and pushed, thanks! I just removed 3 trailing spaces on
the 2 patches. One had two trailing spaces, the last patch had one.

 Luis
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kalle Valo Sept. 5, 2013, 4:49 a.m. UTC | #2
"Luis R. Rodriguez" <rodrigue@qca.qualcomm.com> writes:

> On Mon, Aug 19, 2013 at 12:11 PM, Kalle Valo <kvalo@qca.qualcomm.com> wrote:
>> This one's a skeleton as well.
>>
>> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
>
> Applied both and pushed, thanks!

Thanks.

> I just removed 3 trailing spaces on the 2 patches. One had two
> trailing spaces, the last patch had one.

Oh, sorry about that. Any ideas how I could check for those myself?
Joe Perches Sept. 5, 2013, 4:57 a.m. UTC | #3
On Thu, 2013-09-05 at 07:49 +0300, Kalle Valo wrote:
> "Luis R. Rodriguez" <rodrigue@qca.qualcomm.com> writes:
> > I just removed 3 trailing spaces on the 2 patches. One had two
> > trailing spaces, the last patch had one.
> 
> Oh, sorry about that. Any ideas how I could check for those myself?

scripts/checkpatch.pl <patch>
git am <patch>


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Julian Calaby Sept. 5, 2013, 4:57 a.m. UTC | #4
Hi Kalle,

On Thu, Sep 5, 2013 at 2:49 PM, Kalle Valo <kvalo@qca.qualcomm.com> wrote:
> "Luis R. Rodriguez" <rodrigue@qca.qualcomm.com> writes:
>
>> On Mon, Aug 19, 2013 at 12:11 PM, Kalle Valo <kvalo@qca.qualcomm.com> wrote:
>>> This one's a skeleton as well.
>>>
>>> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
>>
>> Applied both and pushed, thanks!
>
> Thanks.
>
>> I just removed 3 trailing spaces on the 2 patches. One had two
>> trailing spaces, the last patch had one.
>
> Oh, sorry about that. Any ideas how I could check for those myself?

If you have coloured diff output enabled in git (color.diff = true)
then they and other whitespace errors are highlighted in red whenever
you do diffs.

Thanks,
Kalle Valo Sept. 5, 2013, 5:03 a.m. UTC | #5
Joe Perches <joe@perches.com> writes:

> On Thu, 2013-09-05 at 07:49 +0300, Kalle Valo wrote:
>> "Luis R. Rodriguez" <rodrigue@qca.qualcomm.com> writes:
>> > I just removed 3 trailing spaces on the 2 patches. One had two
>> > trailing spaces, the last patch had one.
>> 
>> Oh, sorry about that. Any ideas how I could check for those myself?
>
> scripts/checkpatch.pl <patch>

Checkpatch works also with trace-cmd plugins written in python?

> git am <patch>

Yeah, I guess I could do that, it's just a bit inconvienient.
Kalle Valo Sept. 5, 2013, 5:08 a.m. UTC | #6
Hi Julian,

Julian Calaby <julian.calaby@gmail.com> writes:

> On Thu, Sep 5, 2013 at 2:49 PM, Kalle Valo <kvalo@qca.qualcomm.com> wrote:
>> "Luis R. Rodriguez" <rodrigue@qca.qualcomm.com> writes:
>>
>>> On Mon, Aug 19, 2013 at 12:11 PM, Kalle Valo <kvalo@qca.qualcomm.com> wrote:
>>>> This one's a skeleton as well.
>>>>
>>>> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
>>>
>>> Applied both and pushed, thanks!
>>
>> Thanks.
>>
>>> I just removed 3 trailing spaces on the 2 patches. One had two
>>> trailing spaces, the last patch had one.
>>
>> Oh, sorry about that. Any ideas how I could check for those myself?
>
> If you have coloured diff output enabled in git (color.diff = true)
> then they and other whitespace errors are highlighted in red whenever
> you do diffs.

I don't normally have colors enabled (don't like them), but it seems to
be easy to enable with 'git diff --color'. It's just that it doesn't
seem to work in my terminal, I only see the ANSI codes and no colors.
But this is the best way to do that, just need to fix my terminal.

Thanks!
Joe Perches Sept. 5, 2013, 5:38 a.m. UTC | #7
On Thu, 2013-09-05 at 08:03 +0300, Kalle Valo wrote:
> Joe Perches <joe@perches.com> writes:
> 
> > On Thu, 2013-09-05 at 07:49 +0300, Kalle Valo wrote:
> >> "Luis R. Rodriguez" <rodrigue@qca.qualcomm.com> writes:
> >> > I just removed 3 trailing spaces on the 2 patches. One had two
> >> > trailing spaces, the last patch had one.
> >> 
> >> Oh, sorry about that. Any ideas how I could check for those myself?
> >
> > scripts/checkpatch.pl <patch>
> 
> Checkpatch works also with trace-cmd plugins written in python?

Don't see why not.

Trailing spaces are trailing spaces and the trailing
space test is done way before looking at file type
specific tests.

> > git am <patch>
> 
> Yeah, I guess I could do that, it's just a bit inconvienient.

scripting a git am script for a patch
set is just a for loop...

You could also use scripts/cleanpatch

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/tracing/plugins/ath10k.py b/tracing/plugins/ath10k.py
new file mode 100644
index 0000000..1008c05
--- /dev/null
+++ b/tracing/plugins/ath10k.py
@@ -0,0 +1,133 @@ 
+#
+# Copyright (c) 2012 Qualcomm Atheros, Inc.
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# trace-cmd plugin for ath10k, QCA Linux wireless driver
+
+
+import tracecmd
+import struct
+import binascii
+
+def hexdump(buf, prefix=None):
+    s = binascii.b2a_hex(buf)
+    s_len = len(s)
+    result = ""
+
+    if prefix == None:
+        prefix = ""
+
+    for i in range(s_len / 2):
+        if i % 16 == 0:
+            result = result + ("%s%04x: " % (prefix, i))
+
+        result = result + (s[2*i] + s[2*i+1] + " ")
+
+        if (i + 1) % 16 == 0:
+            result = result + "\n"
+
+    # FIXME: if len(s) % 16 == 0 there's an extra \n in the end
+
+    return result
+
+wmi_scan_event_names = [
+    [0x1,  "WMI_SCAN_EVENT_STARTED" ],
+    [0x2,  "WMI_SCAN_EVENT_COMPLETED" ],
+    [0x4, "WMI_SCAN_EVENT_BSS_CHANNEL" ],
+    [0x8,  "WMI_SCAN_EVENT_FOREIGN_CHANNEL"],
+    [0x10, "WMI_SCAN_EVENT_DEQUEUED" ],
+    [0x20, "WMI_SCAN_EVENT_PREEMPTED" ],
+    [0x40, "WMI_SCAN_EVENT_START_FAILED" ],
+    ]
+
+def wmi_event_scan(pevent, trace_seq, event, buf):
+    hdr = struct.unpack("<IIIIII", buf[0:24])
+    event = hdr[0]
+    reason = hdr[1]
+    channel_freq = hdr[2]
+    requestor = hdr[3]
+    scan_id = hdr[4]
+    vdev_id = hdr[5]
+
+    trace_seq.puts("\t\t\t\tWMI_SCAN_EVENTID event 0x%x reason %d channel_freq %d requestor %d scan_id %d vdev_id %d\n" %
+                   (event, reason, channel_freq, requestor, scan_id, vdev_id))
+
+    for (i, name) in wmi_scan_event_names:
+        if event == i:
+            trace_seq.puts("\t\t\t\t\t%s" % name)
+
+wmi_event_handlers = [
+    [0x9000, wmi_event_scan ],
+    ]
+
+def wmi_cmd_start_scan_handler(pevent, trace_seq, event, buf):
+    hdr = struct.unpack("<IIIIIIIIIIIIIII", buf[0:60])
+    scan_id = hdr[0]
+
+    trace_seq.puts("\t\t\t\tWMI_START_SCAN_CMDID scan_id %d\n" % (scan_id))
+
+wmi_cmd_handlers = [
+    [0x9000, wmi_cmd_start_scan_handler ],
+    ]
+
+def ath10k_wmi_cmd_handler(pevent, trace_seq, event):
+    buf_len = long(event['buf_len'])
+    buf = event['buf'].data
+
+    # parse wmi header
+    hdr = struct.unpack("<HH", buf[0:4])
+    buf = buf[4:]
+
+    cmd_id = hdr[0]
+
+    trace_seq.puts("id 0x%x len %d\n" % (cmd_id, buf_len))
+
+    for (wmi_id, handler) in wmi_cmd_handlers:
+        if wmi_id == cmd_id:
+            handler(pevent, trace_seq, event, buf)
+            break
+
+def ath10k_wmi_event_handler(pevent, trace_seq, event):
+    buf_len = long(event['buf_len'])
+    buf = event['buf'].data
+
+    hdr = struct.unpack("<HH", buf[0:4])
+    cmd_id = hdr[0]
+
+    trace_seq.puts("id 0x%x len %d\n" % (cmd_id, buf_len))
+
+    for (wmi_id, handler) in wmi_event_handlers:
+        if wmi_id == cmd_id:
+            handler(pevent, trace_seq, event, buf[4:])
+            break
+
+def ath10k_log_dbg_dump_handler(pevent, trace_seq, event):
+    msg = event['msg']
+    prefix = event['prefix']
+    buf_len = long(event['buf_len'])
+    buf = event['buf'].data
+
+    trace_seq.puts("%s\n" % (msg))
+    trace_seq.puts("%s\n" % hexdump(buf, prefix))
+    
+def register(pevent):
+    pevent.register_event_handler("ath10k", "ath10k_wmi_cmd",
+                                  lambda *args:
+                                      ath10k_wmi_cmd_handler(pevent, *args))
+    pevent.register_event_handler("ath10k", "ath10k_wmi_event",
+                                  lambda *args:
+                                      ath10k_wmi_event_handler(pevent, *args))
+    pevent.register_event_handler("ath10k", "ath10k_log_dbg_dump",
+                                  lambda *args:
+                                      ath10k_log_dbg_dump_handler(pevent, *args))