Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ea0737d6 authored by Arend van Spriel's avatar Arend van Spriel Committed by John W. Linville
Browse files

brcmfmac: add trace event for capturing BDC header



The BDC header contains PropTx TLV signals that are useful to capture
for debugging. This event captures the header and tlv's in binary
form. This can be post-processed using trace-cmd plugin.

Reviewed-by: default avatarHante Meuleman <meuleman@broadcom.com>
Reviewed-by: default avatarFranky (Zhenhui) Lin <frankyl@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent cf3a6872
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#include "dhd_bus.h"
#include "fwsignal.h"
#include "dhd_dbg.h"
#include "tracepoint.h"

struct brcmf_proto_cdc_dcmd {
	__le32 cmd;	/* dongle command value */
@@ -292,6 +293,7 @@ void brcmf_proto_hdrpush(struct brcmf_pub *drvr, int ifidx, u8 offset,
	h->flags2 = 0;
	h->data_offset = offset;
	BDC_SET_IF_IDX(h, ifidx);
	trace_brcmf_bdchdr(pktbuf->data);
}

int brcmf_proto_hdrpull(struct brcmf_pub *drvr, bool do_fws, u8 *ifidx,
@@ -309,6 +311,7 @@ int brcmf_proto_hdrpull(struct brcmf_pub *drvr, bool do_fws, u8 *ifidx,
		return -EBADE;
	}

	trace_brcmf_bdchdr(pktbuf->data);
	h = (struct brcmf_proto_bdc_header *)(pktbuf->data);

	*ifidx = BDC_GET_IF_IDX(h);
+21 −0
Original line number Diff line number Diff line
@@ -87,6 +87,27 @@ TRACE_EVENT(brcmf_hexdump,
	TP_printk("hexdump [length=%lu]", __entry->len)
);

TRACE_EVENT(brcmf_bdchdr,
	TP_PROTO(void *data),
	TP_ARGS(data),
	TP_STRUCT__entry(
		__field(u8, flags)
		__field(u8, prio)
		__field(u8, flags2)
		__field(u32, siglen)
		__dynamic_array(u8, signal, *((u8 *)data + 3) * 4)
	),
	TP_fast_assign(
		__entry->flags = *(u8 *)data;
		__entry->prio = *((u8 *)data + 1);
		__entry->flags2 = *((u8 *)data + 2);
		__entry->siglen = *((u8 *)data + 3) * 4;
		memcpy(__get_dynamic_array(signal),
		       (u8 *)data + 4, __entry->siglen);
	),
	TP_printk("bdc: prio=%d siglen=%d", __entry->prio, __entry->siglen)
);

#ifdef CONFIG_BRCM_TRACING

#undef TRACE_INCLUDE_PATH