From: "Nikita V. Shirokov" <tehnerd@tehnerd.com>
To: David Ahern <dsahern@gmail.com>
Cc: Jason Wang <jasowang@redhat.com>,
daniel@iogearbox.net,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Subject: Re: XDP breakage with virtio due to 6870de435b90c083ae0f3f7f341287976ef56f03
Date: Sun, 22 Apr 2018 17:55:03 -0700 [thread overview]
Message-ID: <20180423005503.GA8140@maindev> (raw)
In-Reply-To: <f50aa641-09a7-4a08-498c-e7aa6ac50cc6@gmail.com>
On Sun, Apr 22, 2018 at 04:47:48PM -0600, David Ahern wrote:
> This commit breaks my FIB forwarding program:
>
> commit 6870de435b90c083ae0f3f7f341287976ef56f03
> Author: Nikita V. Shirokov <tehnerd@tehnerd.com>
> Date: Tue Apr 17 21:42:20 2018 -0700
>
> bpf: make virtio compatible w/ bpf_xdp_adjust_tail
>
> w/ bpf_xdp_adjust_tail helper xdp's data_end pointer could be changed as
> well (only "decrease" of pointer's location is going to be supported).
> changing of this pointer will change packet's size.
> for virtio driver we need to adjust XDP_PASS handling by recalculating
> length of the packet if it was passed to the TCP/IP stack
>
> Reviewed-by: Jason Wang <jasowang@redhat.com>
> Signed-off-by: Nikita V. Shirokov <tehnerd@tehnerd.com>
> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
>
> ###
>
> Some of the packets (e.g., ARP or those without a resolved neighbor) are
> passed to the networking stack. What shows up are clearly broken packets:
>
> # tcpdump -n -i eth1
> tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
> listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
> 15:45:29.693238 [|ARP]
> 0x0000: 0001 0800 0604 0001 42c0 ce2f 3fa9 0a64 ........B../?..d
> 15:45:30.710327 [|ARP]
> 0x0000: 0001 0800 0604 0001 42c0 ce2f 3fa9 0a64 ........B../?..d
> 15:45:31.734296 [|ARP]
> 0x0000: 0001 0800 0604 0001 42c0 ce2f 3fa9 0a64 ........B../?..d
> 15:45:32.908720 IP6 truncated-ip6 - 12 bytes
> missing!fe80::40c0:ceff:fe2f:3fa9 > ff02::1:ff00:2: ICMP6, neighbor
> solicitation[|icmp6]
> 15:45:33.910530 IP6 truncated-ip6 - 12 bytes missing!2001:db8:1::64 >
> ff02::1:ff00:2: ICMP6, neighbor solicitation[|icmp6]
> 15:45:34.934437 IP6 truncated-ip6 - 12 bytes missing!2001:db8:1::64 >
> ff02::1:ff00:2: ICMP6, neighbor solicitation[|icmp6]
> 15:45:35.958394 IP6 truncated-ip6 - 12 bytes missing!2001:db8:1::64 >
> ff02::1:ff00:2: ICMP6, neighbor solicitation[|icmp6]
>
> Reverting the mentioned patch fixes the problem.
Hi, David.
thanks for reporting this. looks like in my calculation i've missed
vi->hdr_len during new lengths calculation (it was len = xdp->data_end -
xdp->data; but also shouldbe +vi->hdr_len). will run few more tests
before sending a fix.
prev parent reply other threads:[~2018-04-23 0:55 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-22 22:47 XDP breakage with virtio due to 6870de435b90c083ae0f3f7f341287976ef56f03 David Ahern
2018-04-23 0:55 ` Nikita V. Shirokov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180423005503.GA8140@maindev \
--to=tehnerd@tehnerd.com \
--cc=daniel@iogearbox.net \
--cc=dsahern@gmail.com \
--cc=jasowang@redhat.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.