[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CANn89iLWkJrth7jLTSp-jFK-UUTFMN6UxHc_HcDGkSNFN2kXQQ@mail.gmail.com>
Date: Sat, 6 Apr 2024 09:07:04 +0200
From: Eric Dumazet <edumazet@...gle.com>
To: shironeko@...aguri.club
Cc: Jose Alonso <joalonsof@...il.com>, "David S . Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>, netdev@...r.kernel.org,
Soheil Hassas Yeganeh <soheil@...gle.com>, Neal Cardwell <ncardwell@...gle.com>,
Yuchung Cheng <ycheng@...gle.com>, eric.dumazet@...il.com
Subject: Re: [PATCH net-next] tcp: get rid of sysctl_tcp_adv_win_scale
On Sat, Apr 6, 2024 at 8:11 AM Eric Dumazet <edumazet@...gle.com> wrote:
>
> On Sat, Apr 6, 2024 at 2:22 AM <shironeko@...aguri.club> wrote:
> >
> > The patch seems to be working, no more dmesg errors or network cut-outs. Thank you!
> >
> > There is however this line printed yesterday afternoon, so seem there's still some weirdness.
> > > TCP: eth0: Driver has suspect GRO implementation, TCP performance may be compromised.
>
> This is great, could you add the following to get some details from the skb ?
>
> diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
> index 1b6cd384001202df5f8e8e8c73adff0db89ece63..e30895a9cc8627cf423c3c5a783d525db0b2db8e
> 100644
> --- a/net/ipv4/tcp_input.c
> +++ b/net/ipv4/tcp_input.c
> @@ -209,9 +209,11 @@ static __cold void tcp_gro_dev_warn(const struct
> sock *sk, const struct sk_buff
>
> rcu_read_lock();
> dev = dev_get_by_index_rcu(sock_net(sk), skb->skb_iif);
> - if (!dev || len >= READ_ONCE(dev->mtu))
> + if (!dev || len >= READ_ONCE(dev->mtu)) {
> + skb_dump(KERN_ERR, skb, false);
> pr_warn("%s: Driver has suspect GRO implementation,
> TCP performance may be compromised.\n",
> dev ? dev->name : "Unknown driver");
> + }
> rcu_read_unlock();
> }
Thinking more about this, I think this (old) issue comes from the
large skb->head allocated by usbnet,
allowing tcp_add_backlog/skb_try_coalesce() to aggregate multiple
non-gro packets into a single skb.
We could fix this generically from usbnet_skb_return(), instead of
'fixing' all usbnet drivers.
Powered by blists - more mailing lists