mirror of https://gitee.com/openkylin/linux.git
ath6kl: add tracing points for sdio transfers
Add tracing points for sdio transfers, just dump the address, flags and the buffer. Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
parent
416cf0b49e
commit
e60c81543f
|
@ -28,6 +28,7 @@
|
|||
#include "target.h"
|
||||
#include "debug.h"
|
||||
#include "cfg80211.h"
|
||||
#include "trace.h"
|
||||
|
||||
struct ath6kl_sdio {
|
||||
struct sdio_func *func;
|
||||
|
@ -179,6 +180,8 @@ static int ath6kl_sdio_io(struct sdio_func *func, u32 request, u32 addr,
|
|||
request & HIF_FIXED_ADDRESS ? " (fixed)" : "", buf, len);
|
||||
ath6kl_dbg_dump(ATH6KL_DBG_SDIO_DUMP, NULL, "sdio ", buf, len);
|
||||
|
||||
trace_ath6kl_sdio(addr, request, buf, len);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -309,6 +312,13 @@ static int ath6kl_sdio_scat_rw(struct ath6kl_sdio *ar_sdio,
|
|||
sdio_claim_host(ar_sdio->func);
|
||||
|
||||
mmc_set_data_timeout(&data, ar_sdio->func->card);
|
||||
|
||||
trace_ath6kl_sdio_scat(scat_req->addr,
|
||||
scat_req->req,
|
||||
scat_req->len,
|
||||
scat_req->scat_entries,
|
||||
scat_req->scat_list);
|
||||
|
||||
/* synchronous call to process request */
|
||||
mmc_wait_for_req(ar_sdio->func->card->host, &mmc_req);
|
||||
|
||||
|
|
|
@ -14,5 +14,10 @@
|
|||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include "trace.h"
|
||||
|
||||
EXPORT_TRACEPOINT_SYMBOL(ath6kl_sdio);
|
||||
EXPORT_TRACEPOINT_SYMBOL(ath6kl_sdio_scat);
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include <linux/skbuff.h>
|
||||
#include <linux/tracepoint.h>
|
||||
#include "wmi.h"
|
||||
#include "hif.h"
|
||||
|
||||
#if !defined(_ATH6KL_TRACE_H)
|
||||
static inline unsigned int ath6kl_get_wmi_id(void *buf, size_t buf_len)
|
||||
|
@ -75,6 +76,95 @@ TRACE_EVENT(ath6kl_wmi_event,
|
|||
)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ath6kl_sdio,
|
||||
TP_PROTO(unsigned int addr, int flags,
|
||||
void *buf, size_t buf_len),
|
||||
|
||||
TP_ARGS(addr, flags, buf, buf_len),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned int, tx)
|
||||
__field(unsigned int, addr)
|
||||
__field(int, flags)
|
||||
__field(size_t, buf_len)
|
||||
__dynamic_array(u8, buf, buf_len)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->addr = addr;
|
||||
__entry->flags = flags;
|
||||
__entry->buf_len = buf_len;
|
||||
memcpy(__get_dynamic_array(buf), buf, buf_len);
|
||||
|
||||
if (flags & HIF_WRITE)
|
||||
__entry->tx = 1;
|
||||
else
|
||||
__entry->tx = 0;
|
||||
),
|
||||
|
||||
TP_printk(
|
||||
"%s addr 0x%x flags 0x%x len %d\n",
|
||||
__entry->tx ? "tx" : "rx",
|
||||
__entry->addr,
|
||||
__entry->flags,
|
||||
__entry->buf_len
|
||||
)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ath6kl_sdio_scat,
|
||||
TP_PROTO(unsigned int addr, int flags, unsigned int total_len,
|
||||
unsigned int entries, struct hif_scatter_item *list),
|
||||
|
||||
TP_ARGS(addr, flags, total_len, entries, list),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned int, tx)
|
||||
__field(unsigned int, addr)
|
||||
__field(int, flags)
|
||||
__field(unsigned int, entries)
|
||||
__field(size_t, total_len)
|
||||
__dynamic_array(unsigned int, len_array, entries)
|
||||
__dynamic_array(u8, data, total_len)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
unsigned int *len_array;
|
||||
int i, offset = 0;
|
||||
size_t len;
|
||||
|
||||
__entry->addr = addr;
|
||||
__entry->flags = flags;
|
||||
__entry->entries = entries;
|
||||
__entry->total_len = total_len;
|
||||
|
||||
if (flags & HIF_WRITE)
|
||||
__entry->tx = 1;
|
||||
else
|
||||
__entry->tx = 0;
|
||||
|
||||
len_array = __get_dynamic_array(len_array);
|
||||
|
||||
for (i = 0; i < entries; i++) {
|
||||
len = list[i].len;
|
||||
|
||||
memcpy((u8 *) __get_dynamic_array(data) + offset,
|
||||
list[i].buf, len);
|
||||
|
||||
len_array[i] = len;
|
||||
offset += len;
|
||||
}
|
||||
),
|
||||
|
||||
TP_printk(
|
||||
"%s addr 0x%x flags 0x%x entries %d total_len %d\n",
|
||||
__entry->tx ? "tx" : "rx",
|
||||
__entry->addr,
|
||||
__entry->flags,
|
||||
__entry->entries,
|
||||
__entry->total_len
|
||||
)
|
||||
);
|
||||
|
||||
#endif /* _ ATH6KL_TRACE_H || TRACE_HEADER_MULTI_READ*/
|
||||
|
||||
/* we don't want to use include/trace/events */
|
||||
|
|
Loading…
Reference in New Issue