Messages in this thread | | | Date | Wed, 25 Aug 2021 23:19:42 -0400 | From | Steven Rostedt <> | Subject | Re: [PATCH] net: tcp_drop adds `reason` parameter for tracing v2 |
| |
On Wed, 25 Aug 2021 08:47:46 -0700 Eric Dumazet <edumazet@google.com> wrote:
> > @@ -5703,15 +5700,15 @@ static bool tcp_validate_incoming(struct sock *sk, struct sk_buff *skb, > > TCP_INC_STATS(sock_net(sk), TCP_MIB_INERRS); > > NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPSYNCHALLENGE); > > tcp_send_challenge_ack(sk, skb); > > - goto discard; > > + tcp_drop(sk, skb, TCP_DROP_MASK(__LINE__, TCP_VALIDATE_INCOMING)); > > I'd rather use a string. So that we can more easily identify _why_ the > packet was drop, without looking at the source code > of the exact kernel version to locate line number 1057 > > You can be sure that we will get reports in the future from users of > heavily modified kernels. > Having to download a git tree, or apply semi-private patches is a no go. > > If you really want to include __FILE__ and __LINE__, these both can be > stringified and included in the report, with the help of macros.
I agree the __LINE__ is pointless, but if this has a tracepoint involved, then you can simply enable the stacktrace trigger to it and it will save a stack trace in the ring buffer for you.
echo stacktrace > /sys/kernel/tracing/events/tcp/tcp_drop/trigger
And when the event triggers it will record a stack trace. You can also even add a filter to do it only for specific reasons.
echo 'stacktrace if reason == 1' > /sys/kernel/tracing/events/tcp/tcp_drop/trigger
And it even works for flags:
echo 'stacktrace if reason & 0xa' > /sys/kernel/tracing/events/tcp/tcp_drop/trigger
Which gives another reason to use an enum over a string.
-- Steve
| |