DNS (?) not working on G5 (64-bit powerpc) (was [net-next, v3, 3/3] udp: try to avoid 2 cache miss on dequeue)

Hannes Frederic Sowa hannes at stressinduktion.org
Fri Jun 23 07:18:17 AEST 2017


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


More information about the Linuxppc-dev mailing list