summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/trace/events/skb.h22
-rw-r--r--net/core/dev.c1
2 files changed, 23 insertions, 0 deletions
diff --git a/include/trace/events/skb.h b/include/trace/events/skb.h
index 0c68ae22da22..95ca6e841212 100644
--- a/include/trace/events/skb.h
+++ b/include/trace/events/skb.h
@@ -50,6 +50,28 @@ TRACE_EVENT(consume_skb,
TP_printk("skbaddr=%p", __entry->skbaddr)
);
+TRACE_EVENT(print_skb_gso,
+
+ TP_PROTO(struct sk_buff *skb),
+
+ TP_ARGS(skb),
+
+ TP_STRUCT__entry(
+ __field(void *, skbaddr)
+ __field(int , len)
+ __field(int , data_len)
+ ),
+
+ TP_fast_assign(
+ __entry->skbaddr = skb;
+ __entry->len = skb->len;
+ __entry->data_len = skb->data_len;
+ ),
+
+ TP_printk("GSO: skbaddr=%p, len=%d, data_len=%d",
+ __entry->skbaddr, __entry->len, __entry->data_len)
+);
+
TRACE_EVENT(skb_copy_datagram_iovec,
TP_PROTO(const struct sk_buff *skb, int len),
diff --git a/net/core/dev.c b/net/core/dev.c
index f1a645cc3573..426dceb2ee03 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2768,6 +2768,7 @@ static struct sk_buff *validate_xmit_skb(struct sk_buff *skb, struct net_device
if (netif_needs_gso(skb, features)) {
struct sk_buff *segs;
+ trace_print_skb_gso(skb);
segs = skb_gso_segment(skb, features);
if (IS_ERR(segs)) {
goto out_kfree_skb;