brcmfmac: add tracepoint for capturing the SDPCM header
authorArend van Spriel <arend@broadcom.com>
Tue, 15 Oct 2013 13:44:47 +0000 (15:44 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 18 Oct 2013 18:06:57 +0000 (14:06 -0400)
Having the SDPCM header information in the traces is a valuable
piece of information.

Reviewed-by: Franky Lin <frankyl@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
drivers/net/wireless/brcm80211/brcmfmac/tracepoint.h

index 67f05db..ab1c919 100644 (file)
@@ -1147,6 +1147,8 @@ static int brcmf_sdio_hdparse(struct brcmf_sdio *bus, u8 *header,
        u8 rx_seq, fc, tx_seq_max;
        u32 swheader;
 
+       trace_brcmf_sdpcm_hdr(false, header);
+
        /* hw header */
        len = get_unaligned_le16(header);
        checksum = get_unaligned_le16(header + sizeof(u16));
@@ -1269,6 +1271,7 @@ static void brcmf_sdio_hdpack(struct brcmf_sdio *bus, u8 *header,
                     SDPCM_DOFFSET_MASK;
        *(((__le32 *)header) + 1) = cpu_to_le32(sw_header);
        *(((__le32 *)header) + 2) = 0;
+       trace_brcmf_sdpcm_hdr(true, header);
 }
 
 static u8 brcmf_sdbrcm_rxglom(struct brcmf_sdio *bus, u8 rxseq)
index 4605a1d..3c67529 100644 (file)
@@ -110,6 +110,23 @@ TRACE_EVENT(brcmf_bdchdr,
        TP_printk("bdc: prio=%d siglen=%d", __entry->prio, __entry->siglen)
 );
 
+TRACE_EVENT(brcmf_sdpcm_hdr,
+       TP_PROTO(bool tx, void *data),
+       TP_ARGS(tx, data),
+       TP_STRUCT__entry(
+               __field(u8, tx)
+               __field(u16, len)
+               __array(u8, hdr, 12)
+       ),
+       TP_fast_assign(
+               memcpy(__entry->hdr, data, 12);
+               __entry->len = __entry->hdr[0] | (__entry->hdr[1] << 8);
+               __entry->tx = tx ? 1 : 0;
+       ),
+       TP_printk("sdpcm: %s len %u, seq %d", __entry->tx ? "TX" : "RX",
+                 __entry->len, __entry->hdr[4])
+);
+
 #ifdef CONFIG_BRCM_TRACING
 
 #undef TRACE_INCLUDE_PATH