diff mbox series

net: tracepoint: exposing sk_family in all tcp:tracepoints

Message ID 20210129001210.344438-1-hari@netflix.com
State New
Headers show
Series net: tracepoint: exposing sk_family in all tcp:tracepoints | expand

Commit Message

Hariharan Ananthakrishnan Jan. 29, 2021, 12:12 a.m. UTC
Similar to sock:inet_sock_set_state tracepoint, expose sk_family to
distinguish AF_INET and AF_INET6 families.

The following tcp tracepoints are updated:
tcp:tcp_destroy_sock
tcp:tcp_rcv_space_adjust
tcp:tcp_retransmit_skb
tcp:tcp_send_reset
tcp:tcp_receive_reset
tcp:tcp_retransmit_synack
tcp:tcp_probe

Signed-off-by: Hariharan Ananthakrishnan <hari@netflix.com>
Signed-off-by: Brendan Gregg <bgregg@netflix.com>
---
 include/trace/events/tcp.h | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)


base-commit: bbc20b70424aeb3c84f833860f6340adda5141fc

Comments

Jakub Kicinski Feb. 1, 2021, 10:06 p.m. UTC | #1
On Fri, 29 Jan 2021 00:12:10 +0000 Hariharan Ananthakrishnan wrote:
> Similar to sock:inet_sock_set_state tracepoint, expose sk_family to

> distinguish AF_INET and AF_INET6 families.

> 

> The following tcp tracepoints are updated:

> tcp:tcp_destroy_sock

> tcp:tcp_rcv_space_adjust

> tcp:tcp_retransmit_skb

> tcp:tcp_send_reset

> tcp:tcp_receive_reset

> tcp:tcp_retransmit_synack

> tcp:tcp_probe

> 

> Signed-off-by: Hariharan Ananthakrishnan <hari@netflix.com>

> Signed-off-by: Brendan Gregg <bgregg@netflix.com>


Eric, any thoughts?
Eric Dumazet Feb. 2, 2021, 7:38 a.m. UTC | #2
On Mon, Feb 1, 2021 at 11:06 PM Jakub Kicinski <kuba@kernel.org> wrote:
>

> On Fri, 29 Jan 2021 00:12:10 +0000 Hariharan Ananthakrishnan wrote:

> > Similar to sock:inet_sock_set_state tracepoint, expose sk_family to

> > distinguish AF_INET and AF_INET6 families.

> >

> > The following tcp tracepoints are updated:

> > tcp:tcp_destroy_sock

> > tcp:tcp_rcv_space_adjust

> > tcp:tcp_retransmit_skb

> > tcp:tcp_send_reset

> > tcp:tcp_receive_reset

> > tcp:tcp_retransmit_synack

> > tcp:tcp_probe

> >

> > Signed-off-by: Hariharan Ananthakrishnan <hari@netflix.com>

> > Signed-off-by: Brendan Gregg <bgregg@netflix.com>

>

> Eric, any thoughts?



I do not use these tracepoints in production scripts, but I wonder if
existing tools could break after this change ?

Or do we consider tracepoints format is not part of the ABI and can be
arbitrarily changed by anyone ?
Stanislav Fomichev Feb. 3, 2021, 4:26 p.m. UTC | #3
On 02/02, Eric Dumazet wrote:
> On Mon, Feb 1, 2021 at 11:06 PM Jakub Kicinski <kuba@kernel.org> wrote:

> >

> > On Fri, 29 Jan 2021 00:12:10 +0000 Hariharan Ananthakrishnan wrote:

> > > Similar to sock:inet_sock_set_state tracepoint, expose sk_family to

> > > distinguish AF_INET and AF_INET6 families.

> > >

> > > The following tcp tracepoints are updated:

> > > tcp:tcp_destroy_sock

> > > tcp:tcp_rcv_space_adjust

> > > tcp:tcp_retransmit_skb

> > > tcp:tcp_send_reset

> > > tcp:tcp_receive_reset

> > > tcp:tcp_retransmit_synack

> > > tcp:tcp_probe

> > >

> > > Signed-off-by: Hariharan Ananthakrishnan <hari@netflix.com>

> > > Signed-off-by: Brendan Gregg <bgregg@netflix.com>

> >

> > Eric, any thoughts?



> I do not use these tracepoints in production scripts, but I wonder if

> existing tools could break after this change ?


> Or do we consider tracepoints format is not part of the ABI and can be

> arbitrarily changed by anyone ?

They are not ABI and since we are extending tracepoints with additional
info (and not removing any existing fields) it shouldn't be a problem.
Jakub Kicinski Feb. 3, 2021, 6:16 p.m. UTC | #4
On Wed, 3 Feb 2021 08:26:04 -0800 sdf@google.com wrote:
> On 02/02, Eric Dumazet wrote:

> > On Mon, Feb 1, 2021 at 11:06 PM Jakub Kicinski <kuba@kernel.org> wrote:  

> > > Eric, any thoughts?  

> 

> > I do not use these tracepoints in production scripts, but I wonder if

> > existing tools could break after this change ?  

> 

> > Or do we consider tracepoints format is not part of the ABI and can be

> > arbitrarily changed by anyone ?  

> 

> They are not ABI and since we are extending tracepoints with additional

> info (and not removing any existing fields) it shouldn't be a problem.


Okay, but we should perhaps add the field at the end just to be on the
safe side (and avoid weird alignment of the IP addresses).
Hariharan Ananthakrishnan Feb. 3, 2021, 6:25 p.m. UTC | #5
On Wed, Feb 3, 2021 at 10:16 AM Jakub Kicinski <kuba@kernel.org> wrote:
>

> On Wed, 3 Feb 2021 08:26:04 -0800 sdf@google.com wrote:

> > On 02/02, Eric Dumazet wrote:

> > > On Mon, Feb 1, 2021 at 11:06 PM Jakub Kicinski <kuba@kernel.org> wrote:

> > > > Eric, any thoughts?

> >

> > > I do not use these tracepoints in production scripts, but I wonder if

> > > existing tools could break after this change ?

> >

> > > Or do we consider tracepoints format is not part of the ABI and can be

> > > arbitrarily changed by anyone ?

> >

> > They are not ABI and since we are extending tracepoints with additional

> > info (and not removing any existing fields) it shouldn't be a problem.

>

> Okay, but we should perhaps add the field at the end just to be on the

> safe side (and avoid weird alignment of the IP addresses).

I added it after dport to be consistent with the earlier patch to
sock:inet_sock_set_state
https://lore.kernel.org/patchwork/patch/870492/.
Jakub Kicinski Feb. 3, 2021, 6:44 p.m. UTC | #6
On Wed, 3 Feb 2021 10:25:11 -0800 Hariharan Ananthakrishnan wrote:
> On Wed, Feb 3, 2021 at 10:16 AM Jakub Kicinski <kuba@kernel.org> wrote:

> > On Wed, 3 Feb 2021 08:26:04 -0800 sdf@google.com wrote:  

> > > They are not ABI and since we are extending tracepoints with additional

> > > info (and not removing any existing fields) it shouldn't be a problem.  

> >

> > Okay, but we should perhaps add the field at the end just to be on the

> > safe side (and avoid weird alignment of the IP addresses).  

> I added it after dport to be consistent with the earlier patch to

> sock:inet_sock_set_state

> https://lore.kernel.org/patchwork/patch/870492/.


I see :(

I'll give it a few more hours and if there are no objections apply the
patch.
Jakub Kicinski Feb. 4, 2021, 5:26 p.m. UTC | #7
On Fri, 29 Jan 2021 00:12:10 +0000 Hariharan Ananthakrishnan wrote:
> Similar to sock:inet_sock_set_state tracepoint, expose sk_family to

> distinguish AF_INET and AF_INET6 families.

> 

> The following tcp tracepoints are updated:

> tcp:tcp_destroy_sock

> tcp:tcp_rcv_space_adjust

> tcp:tcp_retransmit_skb

> tcp:tcp_send_reset

> tcp:tcp_receive_reset

> tcp:tcp_retransmit_synack

> tcp:tcp_probe

> 

> Signed-off-by: Hariharan Ananthakrishnan <hari@netflix.com>

> Signed-off-by: Brendan Gregg <bgregg@netflix.com>


Fixed up white space and applied, thanks!
diff mbox series

Patch

diff --git a/include/trace/events/tcp.h b/include/trace/events/tcp.h
index cf97f6339acb..a319d2f86cd9 100644
--- a/include/trace/events/tcp.h
+++ b/include/trace/events/tcp.h
@@ -59,6 +59,7 @@  DECLARE_EVENT_CLASS(tcp_event_sk_skb,
 		__field(int, state)
 		__field(__u16, sport)
 		__field(__u16, dport)
+		__field(__u16, family)
 		__array(__u8, saddr, 4)
 		__array(__u8, daddr, 4)
 		__array(__u8, saddr_v6, 16)
@@ -75,6 +76,7 @@  DECLARE_EVENT_CLASS(tcp_event_sk_skb,
 
 		__entry->sport = ntohs(inet->inet_sport);
 		__entry->dport = ntohs(inet->inet_dport);
+		__entry->family = sk->sk_family;
 
 		p32 = (__be32 *) __entry->saddr;
 		*p32 = inet->inet_saddr;
@@ -86,7 +88,8 @@  DECLARE_EVENT_CLASS(tcp_event_sk_skb,
 			      sk->sk_v6_rcv_saddr, sk->sk_v6_daddr);
 	),
 
-	TP_printk("sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c state=%s",
+	TP_printk("family=%s sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c state=%s",
+		  show_family_name(__entry->family),
 		  __entry->sport, __entry->dport, __entry->saddr, __entry->daddr,
 		  __entry->saddr_v6, __entry->daddr_v6,
 		  show_tcp_state_name(__entry->state))
@@ -125,6 +128,7 @@  DECLARE_EVENT_CLASS(tcp_event_sk,
 		__field(const void *, skaddr)
 		__field(__u16, sport)
 		__field(__u16, dport)
+		__field(__u16, family)
 		__array(__u8, saddr, 4)
 		__array(__u8, daddr, 4)
 		__array(__u8, saddr_v6, 16)
@@ -140,6 +144,7 @@  DECLARE_EVENT_CLASS(tcp_event_sk,
 
 		__entry->sport = ntohs(inet->inet_sport);
 		__entry->dport = ntohs(inet->inet_dport);
+		__entry->family = sk->sk_family;
 
 		p32 = (__be32 *) __entry->saddr;
 		*p32 = inet->inet_saddr;
@@ -153,7 +158,8 @@  DECLARE_EVENT_CLASS(tcp_event_sk,
 		__entry->sock_cookie = sock_gen_cookie(sk);
 	),
 
-	TP_printk("sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c sock_cookie=%llx",
+	TP_printk("family=%s sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c sock_cookie=%llx",
+		  show_family_name(__entry->family),
 		  __entry->sport, __entry->dport,
 		  __entry->saddr, __entry->daddr,
 		  __entry->saddr_v6, __entry->daddr_v6,
@@ -192,6 +198,7 @@  TRACE_EVENT(tcp_retransmit_synack,
 		__field(const void *, req)
 		__field(__u16, sport)
 		__field(__u16, dport)
+		__field(__u16, family)
 		__array(__u8, saddr, 4)
 		__array(__u8, daddr, 4)
 		__array(__u8, saddr_v6, 16)
@@ -207,6 +214,7 @@  TRACE_EVENT(tcp_retransmit_synack,
 
 		__entry->sport = ireq->ir_num;
 		__entry->dport = ntohs(ireq->ir_rmt_port);
+		__entry->family = sk->sk_family;
 
 		p32 = (__be32 *) __entry->saddr;
 		*p32 = ireq->ir_loc_addr;
@@ -218,7 +226,8 @@  TRACE_EVENT(tcp_retransmit_synack,
 			      ireq->ir_v6_loc_addr, ireq->ir_v6_rmt_addr);
 	),
 
-	TP_printk("sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c",
+	TP_printk("family=%s sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c",
+	          show_family_name(__entry->family),
 		  __entry->sport, __entry->dport,
 		  __entry->saddr, __entry->daddr,
 		  __entry->saddr_v6, __entry->daddr_v6)
@@ -238,6 +247,7 @@  TRACE_EVENT(tcp_probe,
 		__array(__u8, daddr, sizeof(struct sockaddr_in6))
 		__field(__u16, sport)
 		__field(__u16, dport)
+		__field(__u16, family)
 		__field(__u32, mark)
 		__field(__u16, data_len)
 		__field(__u32, snd_nxt)
@@ -264,6 +274,7 @@  TRACE_EVENT(tcp_probe,
 		__entry->sport = ntohs(inet->inet_sport);
 		__entry->dport = ntohs(inet->inet_dport);
 		__entry->mark = skb->mark;
+		__entry->family = sk->sk_family;
 
 		__entry->data_len = skb->len - __tcp_hdrlen(th);
 		__entry->snd_nxt = tp->snd_nxt;
@@ -276,7 +287,8 @@  TRACE_EVENT(tcp_probe,
 		__entry->sock_cookie = sock_gen_cookie(sk);
 	),
 
-	TP_printk("src=%pISpc dest=%pISpc mark=%#x data_len=%d snd_nxt=%#x snd_una=%#x snd_cwnd=%u ssthresh=%u snd_wnd=%u srtt=%u rcv_wnd=%u sock_cookie=%llx",
+	TP_printk("family=%s src=%pISpc dest=%pISpc mark=%#x data_len=%d snd_nxt=%#x snd_una=%#x snd_cwnd=%u ssthresh=%u snd_wnd=%u srtt=%u rcv_wnd=%u sock_cookie=%llx",
+		  show_family_name(__entry->family),
 		  __entry->saddr, __entry->daddr, __entry->mark,
 		  __entry->data_len, __entry->snd_nxt, __entry->snd_una,
 		  __entry->snd_cwnd, __entry->ssthresh, __entry->snd_wnd,