Re: [PATCH] tcp: tcp_drop adds `SNMP` and `reason` parameter for tracing
From: Cong Wang <hidden>
Date: 2021-09-20 17:43:41
Also in:
lkml
On Tue, Sep 14, 2021 at 7:38 AM Zhongya Yan [off-list ref] wrote:
When we wanted to trace the use of the `tcp_drop(struct sock *sk, struct sk_buff *skb)` function, we didn't know why `tcp` was deleting `skb'. To solve this problem, I updated the function `tcp_drop(struct sock *sk, struct sk_buff *skb, int field, const char *reason)`. This way you can understand the reason for the deletion based on the prompt message. `field`: represents the SNMP-related value `reason`: represents the reason why `tcp` deleted the current `skb`, and contains some hints. Of course, if you want to know more about the reason for updating the current function, you can check: https://www.brendangregg.com/blog/2018-05-31/linux-tcpdrop.html
I think you fail to explain why only TCP needs it? This should be useful for all kinds of drops, not just TCP, therefore you should consider extending net/core/drop_monitor.c instead of just tcp_drop(). Also, kernel does not have to explain it in strings, those SNMP counters are already available for user-space, so kernel could just use SNMP enums and let user-space interpret them. In many cases, you are just adding strings for those SNMP enums. Thanks.