[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1498166297.111795.1018373424.5E414246@webmail.messagingengine.com>
Date: Thu, 22 Jun 2017 23:18:17 +0200
From: Hannes Frederic Sowa <hannes@...essinduktion.org>
To: Paolo Abeni <pabeni@...hat.com>,
Michael Ellerman <mpe@...erman.id.au>
Cc: "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>, netdev@...r.kernel.org,
linuxppc-dev@...ts.ozlabs.org
Subject: Re: DNS (?) not working on G5 (64-bit powerpc) (was [net-next,v3,3/3]
udp: try to avoid 2 cache miss on dequeue)
On Thu, Jun 22, 2017, at 22:57, Paolo Abeni wrote:
>
> Can you please check if the following patch fixes the issue? Only
> compiled tested here.
>
> Thanks!!!
> ---
> diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
> index 067a607..80d89fe 100644
> --- a/net/ipv4/udp.c
> +++ b/net/ipv4/udp.c
> @@ -1446,16 +1446,19 @@ static struct sk_buff
> *__first_packet_length(struct sock *sk,
> {
> struct sk_buff *skb;
>
> - while ((skb = skb_peek(rcvq)) != NULL &&
> - udp_lib_checksum_complete(skb)) {
> - __UDP_INC_STATS(sock_net(sk), UDP_MIB_CSUMERRORS,
> - IS_UDPLITE(sk));
> - __UDP_INC_STATS(sock_net(sk), UDP_MIB_INERRORS,
> - IS_UDPLITE(sk));
> - atomic_inc(&sk->sk_drops);
> - __skb_unlink(skb, rcvq);
> - *total += skb->truesize;
> - kfree_skb(skb);
> + while ((skb = skb_peek(rcvq)) != NULL) {
> + if (udp_lib_checksum_complete(skb)) {
> + __UDP_INC_STATS(sock_net(sk), UDP_MIB_CSUMERRORS,
> + IS_UDPLITE(sk));
> + __UDP_INC_STATS(sock_net(sk), UDP_MIB_INERRORS,
> + IS_UDPLITE(sk));
> + atomic_inc(&sk->sk_drops);
> + __skb_unlink(skb, rcvq);
> + *total += skb->truesize;
> + kfree_skb(skb);
> + } else {
> + udp_set_dev_scratch(skb);
It needs a "break;" here.
> + }
> }
> return skb;
> }
Bye,
Hannes
Powered by blists - more mailing lists