Message ID | 20220216035426.2233808-1-imagedong@tencent.com (mailing list archive) |
---|---|
Headers | show |
Series | net: add skb drop reasons to TCP packet receive | expand |
On Tue, Feb 15, 2022 at 7:54 PM <menglong8.dong@gmail.com> wrote: > > From: Menglong Dong <imagedong@tencent.com> > > In this series patches, reasons for skb drops are added to TCP layer, and > both TCPv4 and TCPv6 are considered. > > in this series patches, the process of packet ingress in TCP layer is > considered, as skb drops hardly happens in the egress path. > > However, it's a little complex for TCP state processing, as I find that > it's hard to report skb drop reasons to where it is freed. For example, > when skb is dropped in tcp_rcv_state_process(), the reason can be caused > by the call of tcp_v4_conn_request(), and it's hard to return a drop > reason from tcp_v4_conn_request(). So I just skip such case for this > moment. > I think you should add at least in this cover letter, or better in a document that can be amended, how this can be used on a typical TCP session. For someone who is having issues with TCP flows, what would they need to do. Think of something that we (kernel dev) could copy paste to future email replies. It might be mostly clear for some of us reviewing patches at this moment, but in one year we will all forget about the details. > > Menglong Dong (9): > net: tcp: introduce tcp_drop_reason() > net: tcp: add skb drop reasons to tcp_v4_rcv() > net: tcp: use kfree_skb_reason() for tcp_v6_rcv() > net: tcp: add skb drop reasons to tcp_v{4,6}_inbound_md5_hash() > net: tcp: add skb drop reasons to tcp_add_backlog() > net: tcp: use kfree_skb_reason() for tcp_v{4,6}_do_rcv() > net: tcp: use tcp_drop_reason() for tcp_rcv_established() > net: tcp: use tcp_drop_reason() for tcp_data_queue() > net: tcp: use tcp_drop_reason() for tcp_data_queue_ofo() > > include/linux/skbuff.h | 28 +++++++++++++++++++++++++ > include/net/tcp.h | 3 ++- > include/trace/events/skb.h | 10 +++++++++ > net/ipv4/tcp_input.c | 42 +++++++++++++++++++++++++++++--------- > net/ipv4/tcp_ipv4.c | 36 ++++++++++++++++++++++++-------- > net/ipv6/tcp_ipv6.c | 42 +++++++++++++++++++++++++++++--------- > 6 files changed, 131 insertions(+), 30 deletions(-) > > -- > 2.34.1 >
On Thu, Feb 17, 2022 at 1:05 AM Eric Dumazet <edumazet@google.com> wrote: > > On Tue, Feb 15, 2022 at 7:54 PM <menglong8.dong@gmail.com> wrote: > > > > From: Menglong Dong <imagedong@tencent.com> > > > > In this series patches, reasons for skb drops are added to TCP layer, and > > both TCPv4 and TCPv6 are considered. > > > > in this series patches, the process of packet ingress in TCP layer is > > considered, as skb drops hardly happens in the egress path. > > > > However, it's a little complex for TCP state processing, as I find that > > it's hard to report skb drop reasons to where it is freed. For example, > > when skb is dropped in tcp_rcv_state_process(), the reason can be caused > > by the call of tcp_v4_conn_request(), and it's hard to return a drop > > reason from tcp_v4_conn_request(). So I just skip such case for this > > moment. > > > > I think you should add at least in this cover letter, or better in a > document that can be amended, > how this can be used on a typical TCP session. > For someone who is having issues with TCP flows, what would they need to do. > Think of something that we (kernel dev) could copy paste to future > email replies. > It might be mostly clear for some of us reviewing patches at this > moment, but in one year we will all forget about the details. > Yeah, this cover letter seems too simple to explain what we are doing. I'll describe in detail what this series patches do and how they can be used in the cover letter, and give some examples. Thanks! Menglong Dong > > > > > Menglong Dong (9): > > net: tcp: introduce tcp_drop_reason() > > net: tcp: add skb drop reasons to tcp_v4_rcv() > > net: tcp: use kfree_skb_reason() for tcp_v6_rcv() > > net: tcp: add skb drop reasons to tcp_v{4,6}_inbound_md5_hash() > > net: tcp: add skb drop reasons to tcp_add_backlog() > > net: tcp: use kfree_skb_reason() for tcp_v{4,6}_do_rcv() > > net: tcp: use tcp_drop_reason() for tcp_rcv_established() > > net: tcp: use tcp_drop_reason() for tcp_data_queue() > > net: tcp: use tcp_drop_reason() for tcp_data_queue_ofo() > > > > include/linux/skbuff.h | 28 +++++++++++++++++++++++++ > > include/net/tcp.h | 3 ++- > > include/trace/events/skb.h | 10 +++++++++ > > net/ipv4/tcp_input.c | 42 +++++++++++++++++++++++++++++--------- > > net/ipv4/tcp_ipv4.c | 36 ++++++++++++++++++++++++-------- > > net/ipv6/tcp_ipv6.c | 42 +++++++++++++++++++++++++++++--------- > > 6 files changed, 131 insertions(+), 30 deletions(-) > > > > -- > > 2.34.1 > >
From: Menglong Dong <imagedong@tencent.com> In this series patches, reasons for skb drops are added to TCP layer, and both TCPv4 and TCPv6 are considered. in this series patches, the process of packet ingress in TCP layer is considered, as skb drops hardly happens in the egress path. However, it's a little complex for TCP state processing, as I find that it's hard to report skb drop reasons to where it is freed. For example, when skb is dropped in tcp_rcv_state_process(), the reason can be caused by the call of tcp_v4_conn_request(), and it's hard to return a drop reason from tcp_v4_conn_request(). So I just skip such case for this moment. Menglong Dong (9): net: tcp: introduce tcp_drop_reason() net: tcp: add skb drop reasons to tcp_v4_rcv() net: tcp: use kfree_skb_reason() for tcp_v6_rcv() net: tcp: add skb drop reasons to tcp_v{4,6}_inbound_md5_hash() net: tcp: add skb drop reasons to tcp_add_backlog() net: tcp: use kfree_skb_reason() for tcp_v{4,6}_do_rcv() net: tcp: use tcp_drop_reason() for tcp_rcv_established() net: tcp: use tcp_drop_reason() for tcp_data_queue() net: tcp: use tcp_drop_reason() for tcp_data_queue_ofo() include/linux/skbuff.h | 28 +++++++++++++++++++++++++ include/net/tcp.h | 3 ++- include/trace/events/skb.h | 10 +++++++++ net/ipv4/tcp_input.c | 42 +++++++++++++++++++++++++++++--------- net/ipv4/tcp_ipv4.c | 36 ++++++++++++++++++++++++-------- net/ipv6/tcp_ipv6.c | 42 +++++++++++++++++++++++++++++--------- 6 files changed, 131 insertions(+), 30 deletions(-)