|
@@ -111,9 +111,10 @@ DEFINE_EVENT
|
|
|
|
|
|
TRACE_EVENT(print_skb_gso,
|
|
|
|
|
|
- TP_PROTO(struct sk_buff *skb, __be16 src, __be16 dest),
|
|
|
+ TP_PROTO(struct sk_buff *skb, __be16 src, __be16 dest,
|
|
|
+ u16 ip_proto, u16 xport_proto, const char *saddr, const char *daddr),
|
|
|
|
|
|
- TP_ARGS(skb, src, dest),
|
|
|
+ TP_ARGS(skb, src, dest, ip_proto, xport_proto, saddr, daddr),
|
|
|
|
|
|
TP_STRUCT__entry(
|
|
|
__field(void *, skbaddr)
|
|
@@ -121,6 +122,10 @@ TRACE_EVENT(print_skb_gso,
|
|
|
__field(int, data_len)
|
|
|
__field(__be16, src)
|
|
|
__field(__be16, dest)
|
|
|
+ __field(u16, ip_proto)
|
|
|
+ __field(u16, xport_proto)
|
|
|
+ __string(saddr, saddr)
|
|
|
+ __string(daddr, daddr)
|
|
|
),
|
|
|
|
|
|
TP_fast_assign(
|
|
@@ -129,11 +134,18 @@ TRACE_EVENT(print_skb_gso,
|
|
|
__entry->data_len = skb->data_len;
|
|
|
__entry->src = src;
|
|
|
__entry->dest = dest;
|
|
|
+ __entry->ip_proto = ip_proto;
|
|
|
+ __entry->xport_proto = xport_proto;
|
|
|
+ __assign_str(saddr, saddr);
|
|
|
+ __assign_str(daddr, daddr);
|
|
|
),
|
|
|
|
|
|
- TP_printk("GSO: skbaddr=%pK, len=%d, data_len=%d, src=%u, dest=%u",
|
|
|
+ TP_printk("GSO: skbaddr=%pK, len=%d, data_len=%d, [%s][%s] src=%s %u dest=%s %u",
|
|
|
__entry->skbaddr, __entry->len, __entry->data_len,
|
|
|
- be16_to_cpu(__entry->src), be16_to_cpu(__entry->dest))
|
|
|
+ __entry->ip_proto == htons(ETH_P_IP) ? "IPv4" : "IPv6",
|
|
|
+ __entry->xport_proto == IPPROTO_TCP ? "TCP" : "UDP",
|
|
|
+ __get_str(saddr), be16_to_cpu(__entry->src),
|
|
|
+ __get_str(daddr), be16_to_cpu(__entry->dest))
|
|
|
);
|
|
|
|
|
|
/*****************************************************************************/
|