blob: 59daacc5375e2474b4ad294443cf9000b75923bb [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#undef TRACE_SYSTEM
#define TRACE_SYSTEM ipa
#define TRACE_INCLUDE_FILE ipa_trace
#if !defined(_IPA_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#define _IPA_TRACE_H
#include <linux/tracepoint.h>
TRACE_EVENT(
intr_to_poll3,
TP_PROTO(unsigned long client),
TP_ARGS(client),
TP_STRUCT__entry(
__field(unsigned long, client)
),
TP_fast_assign(
__entry->client = client;
),
TP_printk("client=%lu", __entry->client)
);
TRACE_EVENT(
poll_to_intr3,
TP_PROTO(unsigned long client),
TP_ARGS(client),
TP_STRUCT__entry(
__field(unsigned long, client)
),
TP_fast_assign(
__entry->client = client;
),
TP_printk("client=%lu", __entry->client)
);
TRACE_EVENT(
idle_sleep_enter3,
TP_PROTO(unsigned long client),
TP_ARGS(client),
TP_STRUCT__entry(
__field(unsigned long, client)
),
TP_fast_assign(
__entry->client = client;
),
TP_printk("client=%lu", __entry->client)
);
TRACE_EVENT(
idle_sleep_exit3,
TP_PROTO(unsigned long client),
TP_ARGS(client),
TP_STRUCT__entry(
__field(unsigned long, client)
),
TP_fast_assign(
__entry->client = client;
),
TP_printk("client=%lu", __entry->client)
);
TRACE_EVENT(
rmnet_ipa_netifni3,
TP_PROTO(unsigned long rx_pkt_cnt),
TP_ARGS(rx_pkt_cnt),
TP_STRUCT__entry(
__field(unsigned long, rx_pkt_cnt)
),
TP_fast_assign(
__entry->rx_pkt_cnt = rx_pkt_cnt;
),
TP_printk("rx_pkt_cnt=%lu", __entry->rx_pkt_cnt)
);
TRACE_EVENT(
rmnet_ipa_netifrx3,
TP_PROTO(unsigned long rx_pkt_cnt),
TP_ARGS(rx_pkt_cnt),
TP_STRUCT__entry(
__field(unsigned long, rx_pkt_cnt)
),
TP_fast_assign(
__entry->rx_pkt_cnt = rx_pkt_cnt;
),
TP_printk("rx_pkt_cnt=%lu", __entry->rx_pkt_cnt)
);
TRACE_EVENT(
rmnet_ipa_netif_rcv_skb3,
TP_PROTO(const struct sk_buff *skb, unsigned long rx_pkt_cnt),
TP_ARGS(skb, rx_pkt_cnt),
TP_STRUCT__entry(
__string(name, skb->dev->name)
__field(const void *, skbaddr)
__field(u16, protocol)
__field(unsigned int, len)
__field(unsigned int, data_len)
__field(unsigned long, rx_pkt_cnt)
),
TP_fast_assign(
__assign_str(name, skb->dev->name);
__entry->skbaddr = skb;
__entry->protocol = ntohs(skb->protocol);
__entry->len = skb->len;
__entry->data_len = skb->data_len;
__entry->rx_pkt_cnt = rx_pkt_cnt;
),
TP_printk("dev=%s skbaddr=%p protocol=0x%04x len=%u data_len=%u rx_pkt_cnt=%lu",
__get_str(name),
__entry->skbaddr,
__entry->protocol,
__entry->len,
__entry->data_len,
__entry->rx_pkt_cnt)
);
TRACE_EVENT(
ipa3_napi_rx_poll_num,
TP_PROTO(unsigned long client, int poll_num),
TP_ARGS(client, poll_num),
TP_STRUCT__entry(
__field(unsigned long, client)
__field(int, poll_num)
),
TP_fast_assign(
__entry->client = client;
__entry->poll_num = poll_num;
),
TP_printk("client=%lu each_poll_aggr_pkt_num=%d",
__entry->client,
__entry->poll_num)
);
TRACE_EVENT(
ipa3_napi_rx_poll_cnt,
TP_PROTO(unsigned long client, int poll_num),
TP_ARGS(client, poll_num),
TP_STRUCT__entry(
__field(unsigned long, client)
__field(int, poll_num)
),
TP_fast_assign(
__entry->client = client;
__entry->poll_num = poll_num;
),
TP_printk("client=%lu napi_overall_poll_pkt_cnt=%d",
__entry->client,
__entry->poll_num)
);
TRACE_EVENT(
ipa3_napi_schedule,
TP_PROTO(unsigned long client),
TP_ARGS(client),
TP_STRUCT__entry(
__field(unsigned long, client)
),
TP_fast_assign(
__entry->client = client;
),
TP_printk("client=%lu", __entry->client)
);
TRACE_EVENT(
ipa3_napi_poll_entry,
TP_PROTO(unsigned long client),
TP_ARGS(client),
TP_STRUCT__entry(
__field(unsigned long, client)
),
TP_fast_assign(
__entry->client = client;
),
TP_printk("client=%lu", __entry->client)
);
TRACE_EVENT(
ipa3_napi_poll_exit,
TP_PROTO(unsigned long client),
TP_ARGS(client),
TP_STRUCT__entry(
__field(unsigned long, client)
),
TP_fast_assign(
__entry->client = client;
),
TP_printk("client=%lu", __entry->client)
);
TRACE_EVENT(
ipa_tx_dp,
TP_PROTO(const struct sk_buff *skb, unsigned long client),
TP_ARGS(skb, client),
TP_STRUCT__entry(
__string(name, skb->dev->name)
__field(const void *, skbaddr)
__field(u16, protocol)
__field(unsigned int, len)
__field(unsigned int, data_len)
__field(unsigned long, client)
),
TP_fast_assign(
__assign_str(name, skb->dev->name);
__entry->skbaddr = skb;
__entry->protocol = ntohs(skb->protocol);
__entry->len = skb->len;
__entry->data_len = skb->data_len;
__entry->client = client;
),
TP_printk("dev=%s skbaddr=%p protocol=0x%04x len=%u data_len=%u client=%lu",
__get_str(name),
__entry->skbaddr,
__entry->protocol,
__entry->len,
__entry->data_len,
__entry->client)
);
TRACE_EVENT(
ipa3_tx_done,
TP_PROTO(unsigned long client),
TP_ARGS(client),
TP_STRUCT__entry(
__field(unsigned long, client)
),
TP_fast_assign(
__entry->client = client;
),
TP_printk("client=%lu", __entry->client)
);
TRACE_EVENT(
ipa3_replenish_rx_page_recycle,
TP_PROTO(u32 i, struct page *p, bool is_tmp_alloc),
TP_ARGS(i, p, is_tmp_alloc),
TP_STRUCT__entry(
__field(u32, i)
__field(struct page *, p)
__field(bool, is_tmp_alloc)
__field(unsigned long, pfn)
),
TP_fast_assign(
__entry->i = i;
__entry->p = p;
__entry->is_tmp_alloc = is_tmp_alloc;
__entry->pfn = page_to_pfn(p);
),
TP_printk("wan_cons type=%u: page=0x%pK pfn=0x%lx tmp=%s",
__entry->i, __entry->p, __entry->pfn,
__entry->is_tmp_alloc ? "true" : "false")
);
TRACE_EVENT(
handle_page_completion,
TP_PROTO(struct page *p, struct sk_buff *skb, u16 len,
bool is_tmp_alloc, enum ipa_client_type client),
TP_ARGS(p, skb, len, is_tmp_alloc, client),
TP_STRUCT__entry(
__field(struct page *, p)
__field(struct sk_buff *, skb)
__field(u16, len)
__field(bool, is_tmp_alloc)
__field(unsigned long, pfn)
__field(enum ipa_client_type, client)
),
TP_fast_assign(
__entry->p = p;
__entry->skb = skb;
__entry->len = len;
__entry->is_tmp_alloc = is_tmp_alloc;
__entry->pfn = page_to_pfn(p);
__entry->client = client;
),
TP_printk("%s: page=0x%pK pfn=0x%lx skb=0x%pK len=%u tmp=%s",
(__entry->client == IPA_CLIENT_APPS_WAN_CONS) ? "WAN_CONS"
: "WAN_COAL_CONS",
__entry->p, __entry->pfn, __entry->skb, __entry->len,
__entry->is_tmp_alloc ? "true" : "false")
);
TRACE_EVENT(
ipa3_rx_napi_chain,
TP_PROTO(struct sk_buff *first_skb, struct sk_buff *prev_skb,
struct sk_buff *rx_skb),
TP_ARGS(first_skb, prev_skb, rx_skb),
TP_STRUCT__entry(
__field(struct sk_buff *, first_skb)
__field(struct sk_buff *, prev_skb)
__field(struct sk_buff *, rx_skb)
),
TP_fast_assign(
__entry->first_skb = first_skb;
__entry->prev_skb = prev_skb;
__entry->rx_skb = rx_skb;
),
TP_printk("first_skb=0x%pK prev_skb=0x%pK rx_skb=0x%pK",
__entry->first_skb, __entry->prev_skb, __entry->rx_skb)
);
#endif /* _IPA_TRACE_H */
/* This part must be outside protection */
#ifndef IPA_TRACE_INCLUDE_PATH
#ifdef CONFIG_IPA_VENDOR_DLKM
#define IPA_TRACE_INCLUDE_PATH ../../../../../vendor/qcom/opensource/monaco/dataipa/drivers/platform/msm/ipa/ipa_v3
#else
#define IPA_TRACE_INCLUDE_PATH ../../techpack/dataipa/drivers/platform/msm/ipa/ipa_v3
#endif
#endif
#define TRACE_INCLUDE_PATH IPA_TRACE_INCLUDE_PATH
#include <trace/define_trace.h>